sed: Nächste Zeile an vorheriger anfügen wenn vorherige mit ^M endet

X

xenomorph150

Grünschnabel
Hallo Unix Nutzer!

Ich schreibe grade an einer Art Benachrichtigungstool welches mich über neue Nachrichten etc auf Social Websites informiert.

Das mach ich in einer Verbindung aus Shell Skript, curl und sed sowie ein bisschen cat und was sonst noch anfällt ;-).

Nun habe ich aber bei einer Textparsingstelle ein Problem.
Ich hab die Geburtstagsausgabe von Wkw schon soweit zerlegen können:

Code:
xy hat^M
übermorgen^M
Geburtstag!^M
--
yz hat^M
in 3 Tagen^M
Geburtstag!^M

Problem ist aber natürlich: So ist das keine schöne Ausgabe.
Im Prinzip hätte ich am liebsten das es nachher so aussieht:

Code:
xy hat übermorgen Geburtstag!
yz hat in 3 Tagen Geburtstag!

Was ich also bräuchte wäre irgendein Aufruf der entweder
a) ^M erkennt und überprüft ob
i) nachfolgende Zeile = -- then lösche Zeile
ii) nachfolgende Zeile /= -- then ziehe nachfolgende Zeile ans Ende der jetzigen und überprüfe neues Ende etc.

oder:
Bei ^M am Ende immer die nächste Zeile vorzieht und dann ganz am Ende alle Zeilen mit -- löscht.

Mit sed kann man ^M anscheind nur schwer fassen, daher frage ich hier.
Was ich weiß ist, dass man mit dem Aufruf tr -d '\015\032' u.a. ^M entfernen kann - aber damit wäre mir ja nicht geholfen weil das ganze dann immer noch untereinander steht und es manchmal nur 2 zeilig, manchmal 3 zeilig aus dem Code von wkw kommt.


Ich hoffe man versteht was ich meine xD


Vielen Dank,

Nico
 
Hallo,
wie wäre es damit ... zumindest als Ansatz ...
Gruss zst

Code:
tr -d "\015" < einetestdatei.txt | tr "\012" "|" | sed -e's/|--|/\n/g' | tr "|" " " && echo
[U]AUSGABE:[/U] 
xy hat uebermorgen Geburtstag!
yz hat in 3 Tagen Geburtstag!
 
Zurück
Oben