Sed-Einzeiler zur Bearbeitung von Streamdatei
Sed-Einzeiler zur Bearbeitung von Streamdatei
hallo community.
Ich wünsche euch allen erstmal ein frohes,neues Jahr und hoffe inständig für uns alle, dass dieses Jahr für uns alle ein Besseres wird.
So, nun zu meinem diesjährigen Problem.
Ich habe eine ellenlange Streamdatei für IPTV und würde gerne bestimmte Sequenzen aus dieser Datei vom Anfang bis zum Ende rauslöschen mit sed, nur bekomme ich nicht das richtige Ergebnis.
In der Textdatei sieht es so aus:
#EXTINF:-1,[MUSICA] [ MTV Dance]
|
Nun versuche ich mit sed in Zeilen, in denen der reguläre Ausdruck "#EXTINF:-1,[irgendwas] steht zu löschen, damit danach der Name des Senders drin bleibt, aber ich bekomme es nicht hin. Es wird alles auf den Zeilen gelöscht.
Der sed-Befehl sieht so aus:
sed 's/#EXTINF:-1, /d' file.txt .Wie gesagt, wird alles gelöscht, dass die RegEx enthält.
Kann mir jemand auf die Sprünge helfen?
Ich wünsche euch allen erstmal ein frohes,neues Jahr und hoffe inständig für uns alle, dass dieses Jahr für uns alle ein Besseres wird.
So, nun zu meinem diesjährigen Problem.
Ich habe eine ellenlange Streamdatei für IPTV und würde gerne bestimmte Sequenzen aus dieser Datei vom Anfang bis zum Ende rauslöschen mit sed, nur bekomme ich nicht das richtige Ergebnis.
In der Textdatei sieht es so aus:
#EXTINF:-1,[MUSICA] [ MTV Dance]
|
Nun versuche ich mit sed in Zeilen, in denen der reguläre Ausdruck "#EXTINF:-1,[irgendwas] steht zu löschen, damit danach der Name des Senders drin bleibt, aber ich bekomme es nicht hin. Es wird alles auf den Zeilen gelöscht.
Der sed-Befehl sieht so aus:
sed 's/#EXTINF:-1, /d' file.txt .Wie gesagt, wird alles gelöscht, dass die RegEx enthält.
Kann mir jemand auf die Sprünge helfen?
Zuletzt geändert von tHoRax am 01.01.2017 17:19:45, insgesamt 2-mal geändert.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Diese Syntax s/Muster/d geht so nicht. Ich vermute dass d als Kommando "Zeile löschen, wenn Muster gefunden" interpretiert wird. Probiere es mal so:
Bitte Code-Tags verwenden.
Code: Alles auswählen
sed 's/#EXTINF:-1, //' file.txt
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
sed 's/MUSTER/d' bringt bei mir ein Fehlermeldung bzgl. einem nicht abgeschlossenen substitute Kommandos.
Vielleicht magst du es einmal mit sed 's/MUSTER//' versuchen.Wenn MUSTER immer am Zeilenanfang steht waere ^MUSTER sinnvoller.
Dein "d" (delete) am Ende vertraegt sich nicht mit dem "s" (substitute) am Anfang
Vielleicht magst du es einmal mit sed 's/MUSTER//' versuchen.Wenn MUSTER immer am Zeilenanfang steht waere ^MUSTER sinnvoller.
Dein "d" (delete) am Ende vertraegt sich nicht mit dem "s" (substitute) am Anfang
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
hallo.
Eure Lösungsansätze haben mich schon weitergebracht, beide klappen nur bedingt, namlich bis hier:
#EXTINF:-1,[MUSICA] MTV Dance
Eigentlich sollte der Ausdruck in den eckigen Klammern aucg gelöscht werden.
Eure Lösungsansätze haben mich schon weitergebracht, beide klappen nur bedingt, namlich bis hier:
#EXTINF:-1,[MUSICA] MTV Dance
Eigentlich sollte der Ausdruck in den eckigen Klammern aucg gelöscht werden.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Code: Alles auswählen
[MUSICA]
Code: Alles auswählen
\[MUSICA\]
Code: Alles auswählen
\\[MUSICA\\]
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
@heissenberg,rodney
Wie kann ich noch die eckigen Klammer beseitigen?Keiner ne Idee?
Ich möchte auch die eckigen Klammer samt Inhalt auch beseitigen, dass nur noch der Sendername in der Zeile steht, wo auch immer der Ausdruck #EXTINF:-1,[****] vorkommt.Rodney der o.g Ausdruck steht immer am Anfang einer Zeile.
P.S:
@heissenberg
Unsere Antworten haben sich gegenseitig überschnitten
Aber die verschiedenen Inhalte der eckigen Klammern würde ich gerne weg haben.
Wie kann ich noch die eckigen Klammer beseitigen?Keiner ne Idee?
Ich möchte auch die eckigen Klammer samt Inhalt auch beseitigen, dass nur noch der Sendername in der Zeile steht, wo auch immer der Ausdruck #EXTINF:-1,[****] vorkommt.Rodney der o.g Ausdruck steht immer am Anfang einer Zeile.
P.S:
@heissenberg
Unsere Antworten haben sich gegenseitig überschnitten
Aber die verschiedenen Inhalte der eckigen Klammern würde ich gerne weg haben.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Schau Dir mal reguläre Ausdücke an: https://danielfett.de/de/tutorials/tuto ... ausdrucke/
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Eventuell moechtest du alles inklusive ersten"] loeschen:
Code: Alles auswählen
sed 's/^[^\]]*.//'
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Danke fuer den Link. Kannte ich noch nicht und macht beim ersten Ueberflug einen guten Eindruck.heisenberg hat geschrieben:Schau Dir mal reguläre Ausdücke an: https://danielfett.de/de/tutorials/tuto ... ausdrucke/
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Ja Rodney. Aber mit deinem Code wirderden die Zeichen "#E" gelöscht und der Rest der Zeile wird ausgegeben,
Da stimmt was nicht, bitte prüfen.
Da stimmt was nicht, bitte prüfen.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Args da war ungetestet und hat kleinen Fehler. Korrigierte Version:
Code: Alles auswählen
sed 's/^[^]]*.//'
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Code: Alles auswählen
$ sed 's/#EXTINF:-1,\[.*\] \[/\[/' file.txt
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Klappt irgendwie nicht.
Rodney dein Code löscht alle Zeilen, die nicht nur den Ausdruck enthält, sondern auch alle URL's, die darauf folgen.
Nur die Sendernamen werden ausgegeben.
Die Zeilen sind folgendermaßen aufgebaut:
#EXTINF:-1,[MUSICA] MTV Rocks
http://debianforum.de/forum/
#EXTINF:-1,[MUSICA] MTV Hits
http://debianforum.de/forum
...
...
...
etc.
Ich möchte nur alles was mit #EXTINF:-1,[MUSICA], also bis einschliesslich ] löschen die Sendernamen und die darunterfolgenden URL's behalten.
Beim Ansatz von Rodney bleiben zwar die Sendernamen, aber die URL's verschwinden.
Bei dufty wird die Datei ausgegeben, so wie sie war.
Rodney dein Code löscht alle Zeilen, die nicht nur den Ausdruck enthält, sondern auch alle URL's, die darauf folgen.
Nur die Sendernamen werden ausgegeben.
Die Zeilen sind folgendermaßen aufgebaut:
#EXTINF:-1,[MUSICA] MTV Rocks
http://debianforum.de/forum/
#EXTINF:-1,[MUSICA] MTV Hits
http://debianforum.de/forum
...
...
...
etc.
Ich möchte nur alles was mit #EXTINF:-1,[MUSICA], also bis einschliesslich ] löschen die Sendernamen und die darunterfolgenden URL's behalten.
Beim Ansatz von Rodney bleiben zwar die Sendernamen, aber die URL's verschwinden.
Bei dufty wird die Datei ausgegeben, so wie sie war.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Koenntest du mal bitte ein paar Zeilen auf pastebin.php pasten?
Ansonsten folgendes versuchen:
Ansonsten folgendes versuchen:
Code: Alles auswählen
sed 's/#EXTINF:-1,[^]]*.\s//'
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Mmmh, also im ersten Post hast Du den 'Sender' in eckigen Klammern angegeben.
Dann halt so:
Dann halt so:
Code: Alles auswählen
$ sed 's/#EXTINF:-1,\[.*\] //' file.txt
MTV Rocks
http://debianforum.de/forum/
MTV Hits
http://debianforum.de/forum
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Irgendwie geht im neuen Jahr einiges so ziemlich schief, Im Nachhinein stelle ich fest, daß mein letzter Beitrag gar nicht auftaucht.
Ich möchte hier nochmals allen Danken.Der letzte Beitrag von rodney hats auf den Punkt gebracht, das was ich eigentlich machen wollte Danke rodney
Ich möchte hier nochmals allen Danken.Der letzte Beitrag von rodney hats auf den Punkt gebracht, das was ich eigentlich machen wollte Danke rodney
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Wie kann/könnte ich (noch) mit sed 2 Zeileninhalte, j-die jeweils zusammengehören- in der Datei, umkehren?
Hört sich kompliziert an, ist aber nicht so.
Beispiel:
#DESCRIPTION ....irgedwas
#SERVICE 4097....irgendwas
#DESCRIPTION ....irgedwas
#SERVICE 4097....irgendwas
#DESCRIPTION ....irgedwas
#SERVICE 4097....irgendwas
#DESCRIPTION ....irgedwas
#SERVICE 4097....irgendwas
usw.
Wie gesagt, Zeile 1>--->Zeile 2,, Zeile 3 <--->Zeile 4, Zeile 5 <---> Zeile 6, also zu einem paar die Pl#tze tauschen und das bis ans Ende der Datei.
Ist das möglich?
Hört sich kompliziert an, ist aber nicht so.
Beispiel:
#DESCRIPTION ....irgedwas
#SERVICE 4097....irgendwas
#DESCRIPTION ....irgedwas
#SERVICE 4097....irgendwas
#DESCRIPTION ....irgedwas
#SERVICE 4097....irgendwas
#DESCRIPTION ....irgedwas
#SERVICE 4097....irgendwas
usw.
Wie gesagt, Zeile 1>--->Zeile 2,, Zeile 3 <--->Zeile 4, Zeile 5 <---> Zeile 6, also zu einem paar die Pl#tze tauschen und das bis ans Ende der Datei.
Ist das möglich?
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Mal aus dem hohlen Bauch heraus geraten...
Code: Alles auswählen
awk 'NR%2==1{b=$0;next}{print $0,b}'
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Zeilen tauschen:
(Kurzerklaerung: Zeile speichern, naechste Zeile einlesen, gespeicherte Zeile anhaengen, ausgeben.)
Code: Alles auswählen
sed -n 'h;n;G;p'
Use ed once in a while!
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Code: Alles auswählen
perl -pe '$_=<>.$_'
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Code: Alles auswählen
sed -n 'h;n;G;p'
(Kurzerklaerung: Zeile speichern, naechste Zeile einlesen, gespeicherte Zeile anhaengen, ausgeben.)
Ich bin überwältigt von dieser kurzen aber wirkungsvollen Lösung,perfekt!Danke meillo,toll ausgeführt
Danke euch allen.
@meillo
Code: Alles auswählen
1 (DE) Mei Musi TV
2 http://ixxxxxxxxxxxxxxxxxxxxxx.ts
3 (DE) MeinTVshop
4 http://xxxxxxxxxxxxxxxxxxxxxxx.ts
5 (DE) München TV
6 http://ixxxxxxxxxxxxxxxxxxxxxxx.ts
7 (DE) Regio TV
8 http://xxxxxxxxxxxxxxxxxxxxxxxx.ts
9 (DE) RFO
10 http://xxxxxxxxxxxxxxxxxxxxxxxxx.ts
Als Beispiel:
Code: Alles auswählen
1 http://ixxxxxxxxxxxxxxxxxxxxxx.ts: (DE) Mei Musi TV
Wie erwähnt, von oben nach ganz unten den jeweiligen Sendernamen mit ":" an die Erweiterung der entsprechenden "ts" anhängen.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
-
- Beiträge: 34
- Registriert: 06.01.2017 05:41:47
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Code: Alles auswählen
sed -n 'h;n;s/\.ts/\.ts\:/;G;s/\n//;s/^[ ]*//;s/\.ts\:[ ]*/\.ts: /;p'
Code: Alles auswählen
http://ixxxxxxxxxxxxxxxxxxxxxx.ts: (DE) Mei Musi TV
http://xxxxxxxxxxxxxxxxxxxxxxx.ts: (DE) MeinTVshop
http://ixxxxxxxxxxxxxxxxxxxxxxx.ts: (DE) München TV
http://xxxxxxxxxxxxxxxxxxxxxxxx.ts: (DE) Regio TV
http://xxxxxxxxxxxxxxxxxxxxxxxxx.ts: (DE) RFO
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Ganz einfach, nach dem Zusammenhaengen der Zeilen (G-Kommando) ersetzt du den Zeilenumbruch durch ``: '':tHoRax hat geschrieben: Wie kann ich jetzt bspw. den Sendernamen der ersten Zeile "(DE) Mei Musi TV" an das Ende der 2.Zeile hinter "ts" mit Doppelpunkt(:) anhängen?Selbe gilt bis ans Ende der Datei.
Code: Alles auswählen
sed -n 'h;n;G;s/\n/: /;p'
Use ed once in a while!
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
btw:
Das finde ich auch einen netten Ansatz, wegen der dahinter stehenden Denkweise. Dafuer mag ich Perl dann doch.heisenberg hat geschrieben:Code: Alles auswählen
perl -pe '$_=<>.$_'
Use ed once in a while!
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Sed-Einzeiler zur Bearbeitung von Streamdatei
Einen hätte ich noch:
Code: Alles auswählen
awk '{getline b;print b"\n"$0}'