Sie können nicht neue Zeilen auf einer Zeile-für-Zeile-Basis mit sed
ersetzen. Sie müssen Zeilen akkumulieren und die Zeilenumbrüche zwischen ersetzen.
text abc\n <- can't replace this one
text abc\ntext def\n <- you can replace the one after "abc" but not the one at the end
Dieses sed
Skript alle Linien sammelt und beseitigt alle Zeilenumbrüche aber die letzte:
sed -n '1{x;d};${H;x;s/\n/\t/g;p};{H}'
By the way, Ihr sed
Skript sed -e "s_/\n_/\t_g"
versucht, alle Schrägstriche durch Zeilenumbrüche gefolgt zu sagen: „ersetzen Schrägstriche gefolgt von Tabs ". Die Unterstriche übernehmen die Funktion der Trennzeichen für den Befehl s
, sodass Schrägstriche leichter als Zeichen zum Suchen und Ersetzen verwendet werden können.
+1 Beat mich um 40 Sekunden – Nifle
@Nifle: Auch keine Katze hier, aber wer zählt? :) – Telemachus
Könnte darauf hinweisen, dass 'newlines' ist die Textdatei – Nifle