Und so, wenn man das gleich an die neuesten Anforderungen anpasst:heisenberg hat geschrieben:Einen hätte ich noch:
Code: Alles auswählen
awk '{getline b;print b"\n"$0}'
Code: Alles auswählen
awk '{getline b;print b": "$0}'
Und so, wenn man das gleich an die neuesten Anforderungen anpasst:heisenberg hat geschrieben:Einen hätte ich noch:
Code: Alles auswählen
awk '{getline b;print b"\n"$0}'
Code: Alles auswählen
awk '{getline b;print b": "$0}'
Den letzten Strichpunkt kann man sich uebrigens noch sparen:Meillo hat geschrieben:Code: Alles auswählen
sed -n 'h;n;G;s/\n/: /;p'
Code: Alles auswählen
sed -n 'h;n;G;s/\n/: /p'
Das finde ich auch. Diese Aufgabe hat mir viel Vergnuegen bereitet.tHoRax hat geschrieben:einfach toll dieses Forum!
Code: Alles auswählen
#DESCRIPTION NATIONAL GEOGRAPHIC CHANNEL
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a//xxxx.ts:NATIONAL GEOGRAPHIC CHANNEL
#DESCRIPTION NAT GEO WILD
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a//xxxx.ts:NAT GEO WILD
Code: Alles auswählen
sed 'h;n;G;s/\n#DESCRIPTION /:/'
Code: Alles auswählen
#DESCRIPTION DE | a.tv uuu
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://url/1430.ts
#DESCRIPTION DE | KiKA uuu
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iurl1429.ts
#DESCRIPTION DE | Pro7 MAXX / ProSiebenSat.1 uuu
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://url/1506.ts
#DESCRIPTION DE | Pro7
Das erledigt mein Befehl vom letzten Post, ich musste nur noch den Fixtext von #DESCRIPTION im s-Kommando den geaenderten Anforderungen anpassen, siehe:tHoRax hat geschrieben: Soweit bin ich jetzt schon, nur muss noch der jeweilige Sendername in der "#DESCRIPTION DE | " - Zeile unten am Ende der zugehörigen "#SERVICE" - Zeile mit "." eingefügt werden.
Code: Alles auswählen
:-L sed 'h;n;G;s/\n#DESCRIPTION DE | /:/' <<!
> #DESCRIPTION DE | a.tv uuu
> #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://url/1430.ts
> #DESCRIPTION DE | KiKA uuu
> #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iurl1429.ts
> #DESCRIPTION DE | Pro7 MAXX / ProSiebenSat.1 uuu
> #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://url/1506.ts
> #DESCRIPTION DE | Pro7
> !
#DESCRIPTION DE | a.tv uuu
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://url/1430.ts:a.tv uuu
#DESCRIPTION DE | KiKA uuu
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iurl1429.ts:KiKA uuu
#DESCRIPTION DE | Pro7 MAXX / ProSiebenSat.1 uuu
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://url/1506.ts:Pro7 MAXX / ProSiebenSat.1 uuu
#DESCRIPTION DE | Pro7
Code: Alles auswählen
sed -n 'h;n;G;p'
Code: Alles auswählen
altes Format(ursprüngliches .m3u-Format Umwandlungsformat
#EXTINF:-1,DE-NICK_JR -> #DESCRIPTION NICK_JR
http://iptv.abcde.df:8000/live/Znvc/Znvc/1234.ts -> #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/1234.ts:NICK_JR
#EXTINF:-1,DE-Disney_Channel_HD -> #DESCRIPTION Disney_Channel_HD
http://iptv.abcde.df:8000/live/Znvc/Znvc/2343.ts -> #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/2343.ts:Disney Channel_HD
#EXTINF:-1,DE-Disney_XD -> #DESCRIPTION Disney_XD
http://iptv.abcde.df:8000/live/Znvc/Znvc/2341.ts -> #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/2341.ts:Disney_XD
#EXTINF:-1,DE-Disney_Junior -> #DESCRIPTION Disney_Junior
http://iptv.abcde.df:8000/live/Znvc/Znvc/3244.ts ->#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/3244.ts:Disney_Junior
#EXTINF:-1,DE-Kika_HD -> #DESCRIPTION Kika_HD
http://iptv.abcde.df:8000/live/Znvc/Znvc/962.ts -> #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/962.ts:Kika_HD
#EXTINF:-1,DE-Disney_Cinemagic -> #DESCRIPTION Disney_Cinemagic
http://iptv.abcde.df:8000/live/Znvc/Znvc/976.ts -> #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/976.ts:Disney_Cinemagic
Code: Alles auswählen
sed -n 's/#EXTINF:-1,DE-/#DESCRIPTION /'
Code: Alles auswählen
sed -n 's/#EXTINF:-1,DE-/#DESCRIPTION /;p'
Code: Alles auswählen
sed -n 's/#EXTINF:-1,DE-/#DESCRIPTION /;p;s/#DESCRIPTION//;x;n'
Code: Alles auswählen
sed -n 's/#EXTINF:-1,DE-/#DESCRIPTION /;p;s/#DESCRIPTION//;x;n;s/http\:\/\//#SERVICE 4097\:0\:1\:0\:0\:0\:0\:0\:0\:0\:http%3a\:\/\//'
Code: Alles auswählen
sed -n 's/#EXTINF:-1,DE-/#DESCRIPTION /;p;s/#DESCRIPTION//;x;n;s/http\:\/\//#SERVICE 4097\:0\:1\:0\:0\:0\:0\:0\:0\:0\:http%3a\:\/\//;s/$/:/;G;p'
Code: Alles auswählen
#DESCRIPTION NICK_JR
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/1234.ts:
NICK_JR
#DESCRIPTION Disney_Channel_HD
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/2343.ts:
Disney_Channel_HD
#DESCRIPTION Disney_XD
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/2341.ts:
Disney_XD
#DESCRIPTION Disney_Junior
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/3244.ts:
Disney_Junior
#DESCRIPTION Kika_HD
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/962.ts:
Kika_HD
#DESCRIPTION Disney_Cinemagic
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/976.ts:
Disney_Cinemagic
Code: Alles auswählen
sed -n 's/#EXTINF:-1,DE-/#DESCRIPTION /;p;s/#DESCRIPTION //;x;n;s/http\:\/\//#SERVICE 4097\:0\:1\:0\:0\:0\:0\:0\:0\:0\:http%3a\:\/\//;G;s/\n/\:/;p'
Code: Alles auswählen
#DESCRIPTION NICK_JR
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/1234.ts:NICK_JR
#DESCRIPTION Disney_Channel_HD
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/2343.ts:Disney_Channel_HD
#DESCRIPTION Disney_XD
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/2341.ts:Disney_XD
#DESCRIPTION Disney_Junior
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/3244.ts:Disney_Junior
#DESCRIPTION Kika_HD
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/962.ts:Kika_HD
#DESCRIPTION Disney_Cinemagic
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/976.ts:Disney_Cinemagic
Bitte kein solcher Mischmasch, sondern einmal die Ausgangsdaten wie sie sind und einmal die Zieldaten wie sie sein sollen, jeweils separat. Denn dann kann ich die Ausgangsdaten in eine Datei kopieren und die Zieldaten in eine andere, und dann an einem Script arbeiten, das mit den Ausgangsdaten ein Ergebnis erzeugt, das ich automatisiert mit diff(1) gegen die Zieldaten abgleichen kann. Das ist die mit Abstand sinnvollste Herangehensweise und hat sich zigfach bewaehrt.tHoRax hat geschrieben: Die ursprüngliche Datei(*m3u), welche ich aus dem Netz runterlade hat etwa folgendes Format:
[...]
Die Darstellung im Codefenster ist mir nicht besonders gelungen, aber die URL's auf der rechten Seite sollten auf die rechte Seite und nicht runter auf der linken Seite weitergeführt werden.
Code: Alles auswählen
Bitte kein solcher Mischmasch...
Code: Alles auswählen
#EXTINF:-1,DE-NICK_JR
http://iptv.abcde.df:8000/live/Znvc/Znvc/1234.ts
#EXTINF:-1,DE-Disney_Channel_HD
http://iptv.abcde.df:8000/live/Znvc/Znvc/2343.ts
#EXTINF:-1,DE-Disney_XD
http://iptv.abcde.df:8000/live/Znvc/Znvc/2341.ts
#EXTINF:-1,DE-Disney_Junior
http://iptv.abcde.df:8000/live/Znvc/Znvc/3244.ts
#EXTINF:-1,DE-Kika_HD
http://iptv.abcde.df:8000/live/Znvc/Znvc/962.ts
#EXTINF:-1,DE-Disney_Cinemagic
http://iptv.abcde.df:8000/live/Znvc/Znvc/976.ts
Code: Alles auswählen
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/1234.ts:NICK_JR
#DESCRIPTION NICK_JR
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/2343.ts:Disney Channel_HD
#DESCRIPTION Disney_Channel_HD
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/2341.ts:Disney_XD
#DESCRIPTION Disney_XD
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/3244.ts:Disney_Junior
#DESCRIPTION Disney_Junior
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/962.ts:Kika_HD
#DESCRIPTION Kika_HD
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a://iptv.abcde.df:8000/live/Znvc/Znvc/976.ts:Disney_Cinemagic
#DESCRIPTION Disney_Cinemagic
Ich hab mir erlaubt die code-Tags zu ergaenzen ... wichtig war mir, dass Quelldaten und Zieldaten klar getrennt sind. (Der Whitespace am Zeilenende ist irrelevant, vermute ich.)tHoRax hat geschrieben:Sorry meillo,eigentlich wollte ich es verständlicher gestalten,aber es kam nicht so an, wie ich es im Text formatiert hatte.Code: Alles auswählen
Bitte kein solcher Mischmasch...
Ich versuche es mal so,ohne dass ich ein Codefenster aufsetze, welches mir so ein Mischmasch erzeugt.
Code: Alles auswählen
sed 's/^#EXTINF:-1,DE-//; h; s/^/#DESCRIPTION /; n; s/^http/#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a/; G; s/\n/:/'
Code: Alles auswählen
sed -n 'h;n;G;p'
Cool, danach hatte ich gesucht - habe den Befehl "Am-Zeilenanfang-einfügen" vermisst.Code: Alles auswählen
s/^/#DESCRIPTION /;
FragDenPinguin hat geschrieben:Cool, danach hatte ich gesucht - habe den Befehl "Am-Zeilenanfang-einfügen" vermisst.Code: Alles auswählen
s/^/#DESCRIPTION /;
Code: Alles auswählen
s/./foo&/
Code: Alles auswählen
sed '.....' ist | diff -uw - soll
Ich fand sehr schoen, wie du den Befehl schrittweise aufgebaut hast und uns dabei an deinen Gedanken teilhaben hast lassen. Ich schreibe sed-Scripte auch auf diese Weise.FragDenPinguin hat geschrieben:Ich versuche es auch noch einmal, wenn es gestattet ist, weil ich diese Anwendung von sed schon recht spannend finde:
Doppelpunkte sind in Regexps keine Metazeichen, die brauchst du also nicht escapen. Und wenn du Suchmuster oder Ersetzungen mit vielen Slashes hast (die du alle escapen muesstest) dann nimm besser einen anderen Delimiter, wie:Code: Alles auswählen
sed -n 's/#EXTINF:-1,DE-/#DESCRIPTION /;p;s/#DESCRIPTION //;x;n;s/http\:\/\//#SERVICE 4097\:0\:1\:0\:0\:0\:0\:0\:0\:0\:http%3a\:\/\//;G;s/\n/\:/;p'
Code: Alles auswählen
sed 's,foo,bar,'
Code: Alles auswählen
sed 'super sed fun for you'