Nie można zastąpić newlines na zasadzie wiersz po wierszu z sed
. Musisz gromadzić linie i zastępować nowe linie między.
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
Ten sed
skrypt gromadzi wszystkie linie i eliminuje wszystkie nowe linie ale ostatni:
sed -n '1{x;d};${H;x;s/\n/\t/g;p};{H}'
Nawiasem mówiąc, Twój sed
skrypt sed -e "s_/\n_/\t_g"
próbuje powiedzieć „zastąpić wszystkie ukośniki następnie nowej linii z ukośnice, a następnie tabulatory ". Podkreślenia przejmują rolę ograniczników dla polecenia s
, dzięki czemu ukośniki mogą być łatwiej używane jako znaki do wyszukiwania i zastępowania.
+1 Pokonaj mnie przez 40 sekund – Nifle
@Nifle: Także nie ma tu "kota", ale kto się liczy? :) – Telemachus
Może chcieć wskazać, że "nowe linie" to plik tekstowy – Nifle