Sed-Einzeiler zur Bearbeitung von Streamdatei

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
tHoRax
Beiträge: 544
Registriert: 22.12.2014 17:23:26

Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von tHoRax » 01.01.2017 17:09:03

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?
Zuletzt geändert von tHoRax am 01.01.2017 17:19:45, insgesamt 2-mal geändert.

Benutzeravatar
heisenberg
Beiträge: 1084
Registriert: 04.06.2015 01:17:27

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von heisenberg » 01.01.2017 17:16:26

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:

Code: Alles auswählen

sed 's/#EXTINF:-1, //' file.txt
Bitte Code-Tags verwenden.

Benutzeravatar
rodney
Beiträge: 43
Registriert: 09.12.2016 04:15:59
Lizenz eigener Beiträge: MIT Lizenz

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von rodney » 01.01.2017 17:25:33

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 ;-)
I don't like poofy coffee... give me Columbian Supremo. --Izchak

tHoRax
Beiträge: 544
Registriert: 22.12.2014 17:23:26

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von tHoRax » 01.01.2017 17:32:55

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. :roll:

Benutzeravatar
heisenberg
Beiträge: 1084
Registriert: 04.06.2015 01:17:27

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von heisenberg » 01.01.2017 17:49:57

Code: Alles auswählen

[MUSICA]
Das ist ein RegEx-Pattern. Sprich die eckigen Klammern haben eine Sonderbedeutung, die Du aufheben("quoten") musst, wenn Du die tatsächlichen Zeichen haben möchtest. Also so:

Code: Alles auswählen

\[MUSICA\]
bzw. so(Weil sich die Shell die ersten Quotes wegschnappt):

Code: Alles auswählen

\\[MUSICA\\]

tHoRax
Beiträge: 544
Registriert: 22.12.2014 17:23:26

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von tHoRax » 01.01.2017 17:52:45

@heissenberg,rodney

Wie kann ich noch die eckigen Klammer beseitigen?Keiner ne Idee? :roll:

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 :lol:

Aber die verschiedenen Inhalte der eckigen Klammern würde ich gerne weg haben.


Benutzeravatar
rodney
Beiträge: 43
Registriert: 09.12.2016 04:15:59
Lizenz eigener Beiträge: MIT Lizenz

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von rodney » 01.01.2017 17:59:32

Eventuell moechtest du alles inklusive ersten"] loeschen:

Code: Alles auswählen

sed 's/^[^\]]*.//'
I don't like poofy coffee... give me Columbian Supremo. --Izchak

Benutzeravatar
rodney
Beiträge: 43
Registriert: 09.12.2016 04:15:59
Lizenz eigener Beiträge: MIT Lizenz

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von rodney » 01.01.2017 18:03:30

heisenberg hat geschrieben:Schau Dir mal reguläre Ausdücke an: https://danielfett.de/de/tutorials/tuto ... ausdrucke/
Danke fuer den Link. Kannte ich noch nicht und macht beim ersten Ueberflug einen guten Eindruck.
I don't like poofy coffee... give me Columbian Supremo. --Izchak

tHoRax
Beiträge: 544
Registriert: 22.12.2014 17:23:26

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von tHoRax » 01.01.2017 18:04:24

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.

Benutzeravatar
rodney
Beiträge: 43
Registriert: 09.12.2016 04:15:59
Lizenz eigener Beiträge: MIT Lizenz

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von rodney » 01.01.2017 18:06:17

Args da war ungetestet und hat kleinen Fehler. Korrigierte Version:

Code: Alles auswählen

sed 's/^[^]]*.//'
I don't like poofy coffee... give me Columbian Supremo. --Izchak

dufty2
Beiträge: 1337
Registriert: 22.12.2013 16:41:16

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von dufty2 » 01.01.2017 18:07:33

Code: Alles auswählen

$ sed 's/#EXTINF:-1,\[.*\] \[/\[/' file.txt
Stichwörter hierfür wären "sed non greedy".

tHoRax
Beiträge: 544
Registriert: 22.12.2014 17:23:26

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von tHoRax » 01.01.2017 18:23:10

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.

Benutzeravatar
rodney
Beiträge: 43
Registriert: 09.12.2016 04:15:59
Lizenz eigener Beiträge: MIT Lizenz

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von rodney » 01.01.2017 18:29:27

Koenntest du mal bitte ein paar Zeilen auf pastebin.php pasten?

Ansonsten folgendes versuchen:

Code: Alles auswählen

sed 's/#EXTINF:-1,[^]]*.\s//'
I don't like poofy coffee... give me Columbian Supremo. --Izchak

dufty2
Beiträge: 1337
Registriert: 22.12.2013 16:41:16

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von dufty2 » 01.01.2017 18:37:46

Mmmh, also im ersten Post hast Du den 'Sender' in eckigen Klammern angegeben.
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

Antworten