Je problém se znakem sed a nového řádku?
Mám soubor test.txt s následujícím obsahem
aaaaa
bbbbb
ccccc
ddddd
Následující nefunguje:sed -r -i 's/n/,/g' test.txt
Vím, že mohu použít tr
pro to, ale moje otázka je, proč se to zdá být nemožné se sed.
Pokud je to vedlejší efekt zpracování souboru řádek po řádku, zajímalo by mě, proč se to děje. Myslím, že grep
odstraní nové řádky. Dělá sed totéž?
Přijatá odpověď:
S GNU sed
a poskytl POSIXLY_CORRECT
není v prostředí (pro jednořádkový vstup):
sed -i ':a;N;$!ba;s/n/,/g' test.txt
Z https://stackoverflow.com/questions/1251999/sed-how-can-i-replace-a-newline-n :
- vytvořte štítek pomocí
:a
- připojit aktuální a další řádek do prostoru vzoru pomocí
N
- pokud jsme před posledním řádkem, odbočíme na vytvořený štítek
$!ba
($!
znamená nedělat to na posledním řádku (protože by tam měl být jeden poslední nový řádek)). - nakonec nahrazení nahradí každý nový řádek čárkou v prostoru vzoru (což je celý soubor).