das hier ist zum Grübeln:
sed ':x;N;$!bx;s/\n//g' foo
Auflösung gibts im Erweiterten Eintrag
Die eigentlich triviale Aufgabe ist: Entferne alle Zeilenumbrüche in der Datei foo
Es funktioniert so:
:x Definiert das Label x
N Lies die nächste Zeile ein (sed arbeitet normalerweise Zeilenweise!)
$! Wenn nicht am Ende der Datei
bx Gehe zurück zu Label x
s/ Suche
\n einen Zeilenumbruch
//g Lösche den gefundenen Zeilenumbruch
hmm, ok. das mit dem $! "match last line" hab ich nicht so ganz kapiert aber egal...
Nimm Datei foo, Markierung, packe Puffer in den Arbeitsspeicher, nimm nächste Zeile samt Newline in den Arbeitsspeicher, führe die Funktion aus, die nicht in den Bereich fallen (Achtung, Zeilenende),springe zur Markierung, Kopiere Arbeitsspeicher in den Puffer und ersetze global die Newlines durch nichts.
Hoffe das stimmt so
Gruß nion
Ist aber wirklich ein bisschen umständlich.
Die angegebene Lösungen sind natürlich korrekt und auch umständlich. Mir ist aber keine andere Lösung mittels sed bekannt, da sed normalerweise ja zeilenweise arbeitet. Alternativ läßt sich das gewünschte natürlich auch mit tr -d '\n' < foo erreichen.