GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann Sed Zeilenumbrüche ersetzen?

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 :

  1. erstelle ein Etikett über :a
  2. Hängen Sie die aktuelle und die nächste Zeile mit N an den Musterbereich an
  3. 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)).
  4. Schließlich ersetzt die Substitution jeden Zeilenumbruch durch ein Komma im Musterbereich (das ist die gesamte Datei).

Linux
  1. So ersetzen Sie eine Zeichenfolge in mehreren Dateien in der Linux-Befehlszeile

  2. Finden Sie passenden Text und ersetzen Sie die nächste Zeile

  3. ersetzt das n-te Vorkommen von String in jeder Zeile einer Textdatei

  4. sed:Wie wird eine Zeile ersetzt, wenn sie gefunden wird, oder an das Ende der Datei angehängt, wenn sie nicht gefunden wird?

  5. Mehrzeilige Sed ersetzen

Top 20 der zu verwendenden sed-Befehle

Zeilenbereich durch Zeilenbereich ersetzen (sed oder andere)?

Sed On Osx Insert an einer bestimmten Zeile?

Unix Sed Tutorial:Dateizeilen anhängen, einfügen, ersetzen und zählen

Wie ersetzt man sed wie Text durch Python?

Ersetzen Sie Zeilen in einer Datei durch Zeilen in einer anderen durch die Zeilennummer