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

Wie kombinieren Sie alle Zeilen, die mit einem Backslash-Zeichen enden?

Ist es mit einem gängigen Befehlszeilentool wie sed oder awk möglich, alle Zeilen zu verbinden, die mit einem bestimmten Zeichen wie einem Backslash enden?

Zum Beispiel angesichts der Datei:

foo bar bash baz
dude happy

Ich möchte diese Ausgabe erhalten:

foo bar bash baz
dude happy

Akzeptierte Antwort:

eine kürzere und einfachere sed-Lösung:

sed  '
: again
/\$/ {
    N
    s/\n//
    t again
}
' textfile

oder Einzeiler, wenn GNU sed verwendet wird :

sed ':x; /\$/ { N; s/\n//; tx }' textfile

Linux
  1. Wie sind Sie zu Linux gekommen?

  2. Wie kann sichergestellt werden, dass die in die `sed`-Ersetzung interpolierte Zeichenfolge allen Metazeichen entgeht?

  3. Wie ersetze ich eine Zeichenfolge durch eine Zeichenfolge, die Slash mit Sed enthält?

  4. Alle C-Kommentare mit Sed löschen?

  5. Zeilenbereich durch Zeilenbereich ersetzen (sed oder andere)?

Wie ersetze ich alle Zeichenfolgen in einer Datei, die mit einem Präfix beginnen?

So entfernen Sie \r-Zeichen mit sed

Wie baut man ein Linux-Kernel-Modul so, dass es mit allen Kernel-Releases kompatibel ist?

wie man eine Vim-Suche inverse Suche nach allen Zeilen ohne Text durchführt

Wie deinstalliere ich ein Paket (einschließlich aller mitgelieferten zusätzlichen Dateien) mit yum (oder rpm) vollständig?

Wie kann man Zeichen rekursiv durch sed ersetzen?