Gibt es ein Problem mit sed und Zeilenumbrüchen?
Ich habe eine Datei test.txt mit folgendem Inhalt
aaaaa
bbbbb
ccccc
ddddd
Folgendes funktioniert nicht:sed -r -i 's/n/,/g' test.txt
Ich weiß, dass ich tr
verwenden kann dazu aber meine frage warum das mit sed nicht möglich scheint.
Wenn dies ein Nebeneffekt der zeilenweisen Verarbeitung der Datei ist, würde mich interessieren, warum dies geschieht. Ich denke grep
entfernt neue Zeilen. Macht sed dasselbe?
Akzeptierte Antwort:
Mit GNU sed
und POSIXLY_CORRECT
bereitgestellt ist nicht in der Umgebung (bei einzeiliger Eingabe):
sed -i ':a;N;$!ba;s/n/,/g' test.txt
Von https://stackoverflow.com/questions/1251999/sed-how-can-i-replace-a-newline-n :
- erstelle ein Etikett über
:a
- Hängen Sie die aktuelle und die nächste Zeile mit
N
an den Musterbereich an - wenn wir uns vor der letzten Zeile befinden, verzweige zum erstellten Label
$!ba
($!
bedeutet, es nicht in der letzten Zeile zu tun (da es einen letzten Zeilenumbruch geben sollte)). - Schließlich ersetzt die Substitution jeden Zeilenumbruch durch ein Komma im Musterbereich (das ist die gesamte Datei).