löschen von zeilenumbruch
hi leutz,
will in einer .txt datei einen zeilenumbruch löschen. ich arbeite mit dem "Unix Werkzeuge - Der Stream Editor". unten zeige ich mal was ich bis jetzt gemacht habe.
1) loeschen der 1 zeile
2) loeschen in 3 zeile die ersten 21 zeichen
3) --> hier ist das problem --> loeschen des zeilenumbruches zwischen zeile 2 und 3
dat klappt aber nicht.
sed -e 1d;$d;3s/^.{21};2s; Einzelbeleg_03_08a.txt >tmp001.txt
kann mir bitte einer helfen und erklären wie das geht.
gruss
micha
will in einer .txt datei einen zeilenumbruch löschen. ich arbeite mit dem "Unix Werkzeuge - Der Stream Editor". unten zeige ich mal was ich bis jetzt gemacht habe.
1) loeschen der 1 zeile
2) loeschen in 3 zeile die ersten 21 zeichen
3) --> hier ist das problem --> loeschen des zeilenumbruches zwischen zeile 2 und 3
dat klappt aber nicht.
sed -e 1d;$d;3s/^.{21};2s; Einzelbeleg_03_08a.txt >tmp001.txt
kann mir bitte einer helfen und erklären wie das geht.
gruss
micha
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 65459
Url: https://administrator.de/forum/loeschen-von-zeilenumbruch-65459.html
Ausgedruckt am: 04.05.2025 um 10:05 Uhr
1 Kommentar

Servus Micha,
das "Problem" beim 'sed' besteht darin, daß Eingabe, Verarbeitung und Ausgabe zeilenweise erfolgt. Wird eine Zeile geschrieben, hängt 'sed' ein NewLine an. Das läßt sich meines Wissens nicht verhindern und hat mich auch schon oft geärgert.
Ich löse das dann in Kombination mit 'awk', indem ich z.B. einen Buffer definiere in den ich hineinschreibe.
Leider ist mir nicht ganz klar, wie Du Deine Datei umformatiert haben möchtest bzw. wieviele Zeilen überhaupt drinstehen. Drum nur als Anhaltspunkt:
Kurze Erklärung:
Die Ausgabe von sed schiebst Du zu awk.
awk gibt die Zeile Nr.1 und alle ab der 4. Zeile unverändert aus (NR ist der interne awk-"Zeilenzähler").
Zeile 2 wird gebuffert und erst mit Zeile 3 ausgegeben, damit werden beide Zeilen zusammengehängt.
Das Beispiel ist nicht wirklich schön und vermutlich nicht genau auf Dein Problem passend, sollte aber zum Verständnis beitragen können.
Gruß
das "Problem" beim 'sed' besteht darin, daß Eingabe, Verarbeitung und Ausgabe zeilenweise erfolgt. Wird eine Zeile geschrieben, hängt 'sed' ein NewLine an. Das läßt sich meines Wissens nicht verhindern und hat mich auch schon oft geärgert.
Ich löse das dann in Kombination mit 'awk', indem ich z.B. einen Buffer definiere in den ich hineinschreibe.
Leider ist mir nicht ganz klar, wie Du Deine Datei umformatiert haben möchtest bzw. wieviele Zeilen überhaupt drinstehen. Drum nur als Anhaltspunkt:
sed -e '<anweisungen>' quelle.txt | awk ' NR==1 || NR>3 {print} ; NR==2 { buf=$0 } ; NR==3 {print buf $0}' > ziel.txt
Kurze Erklärung:
Die Ausgabe von sed schiebst Du zu awk.
awk gibt die Zeile Nr.1 und alle ab der 4. Zeile unverändert aus (NR ist der interne awk-"Zeilenzähler").
Zeile 2 wird gebuffert und erst mit Zeile 3 ausgegeben, damit werden beide Zeilen zusammengehängt.
Das Beispiel ist nicht wirklich schön und vermutlich nicht genau auf Dein Problem passend, sollte aber zum Verständnis beitragen können.
Gruß