2016-05-25 9 views
1

Ich habe eine datei.txtErsatz CarriageReturn mit neuer Linie und Mustern in VIM

line1 
line2 
line3 

drei Linien, während ich in vim öffnen datei.txt i jeden CR (Carriage Return) mit einem neuen ersetzen will Zeile mit der Zeichenkette "foo", etwas wie dieses.

Auch auf der Suche nach der Möglichkeit mit awk, sed und etwas anderes in Bash-Skript.

Antwort

2

Mit sed, wenn Sie nur mit foo Wagenrücklauf ersetzen möchten:

sed 's/\x0D$/\nfoo/' file.txt 

Um eine Linie mit String foo nach jeder Zeile hinzufügen:

sed 's/$/&\nfoo/' file.txt 
0

Dieses Muster wird tun, was Sie wollen in vim.

:%s/\n/^Mfoo^M/g 

Um ^M im Muster, drücken Sie Ctrl + V und dann einfügen Geben Sie. ^M fügt eine neue Zeile, während in dem Muster buchstäblich < einsetzen wird, C, R und >

Statt ^M Sie \r für Linux-Maschinen verwenden können.

:%s/\n/\rfoo\r/g 
2

können Sie diese Substitution in Vim verwenden:

:%s/\n/&foo& 

Oder dieses Makro:

:%g/^/norm ofoo 
1
$ awk '{print $0 "\nfoo"}' file 
line1 
foo 
line2 
foo 
line3 
foo 
Verwandte Themen