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

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von tHoRax » 01.01.2017 20:39:03

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

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

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von tHoRax » 06.01.2017 22:17:55

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?

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

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von heisenberg » 06.01.2017 22:31:12

Mal aus dem hohlen Bauch heraus geraten...

Code: Alles auswählen

awk 'NR%2==1{b=$0;next}{print $0,b}'

Benutzeravatar
Meillo
Moderator
Beiträge: 4605
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von Meillo » 06.01.2017 23:34:41

Zeilen tauschen:

Code: Alles auswählen

sed -n 'h;n;G;p'
(Kurzerklaerung: Zeile speichern, naechste Zeile einlesen, gespeicherte Zeile anhaengen, ausgeben.)
Use ed(1) once in a while!


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

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von tHoRax » 09.01.2017 00:22:46

Code: Alles auswählen

    sed -n 'h;n;G;p'


(Kurzerklaerung: Zeile speichern, naechste Zeile einlesen, gespeicherte Zeile anhaengen, ausgeben.)
@meillo
Ich bin überwältigt von dieser kurzen aber wirkungsvollen Lösung,perfekt!Danke meillo,toll ausgeführt :wink:
Danke euch allen. :THX:

@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
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.

Als Beispiel:

Code: Alles auswählen

1 http://ixxxxxxxxxxxxxxxxxxxxxx.ts: (DE) Mei Musi TV 
Die Zeilennummern dienen hier nur zur Verdeutlichung, zum Verständis.
Wie erwähnt, von oben nach ganz unten den jeweiligen Sendernamen mit ":" an die Erweiterung der entsprechenden "ts" anhängen.

FragDenPinguin
Beiträge: 34
Registriert: 06.01.2017 05:41:47

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von FragDenPinguin » 09.01.2017 02:27:04

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

Benutzeravatar
Meillo
Moderator
Beiträge: 4605
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von Meillo » 09.01.2017 10:24:19

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.
Ganz einfach, nach dem Zusammenhaengen der Zeilen (G-Kommando) ersetzt du den Zeilenumbruch durch ``: '':

Code: Alles auswählen

sed -n 'h;n;G;s/\n/: /;p'
;-)
Use ed(1) once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 4605
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von Meillo » 09.01.2017 10:27:42

btw:
heisenberg hat geschrieben:

Code: Alles auswählen

perl -pe '$_=<>.$_'
Das finde ich auch einen netten Ansatz, wegen der dahinter stehenden Denkweise. Dafuer mag ich Perl dann doch. :-)
Use ed(1) once in a while!

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

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von heisenberg » 09.01.2017 10:53:40

Einen hätte ich noch:

Code: Alles auswählen

awk '{getline b;print b"\n"$0}'

Benutzeravatar
Meillo
Moderator
Beiträge: 4605
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von Meillo » 09.01.2017 11:12:13

heisenberg hat geschrieben:Einen hätte ich noch:

Code: Alles auswählen

awk '{getline b;print b"\n"$0}'
Und so, wenn man das gleich an die neuesten Anforderungen anpasst:

Code: Alles auswählen

awk '{getline b;print b": "$0}'
Use ed(1) once in a while!

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

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von tHoRax » 09.01.2017 11:14:09

einfach toll dieses Forum! :THX:
@meillo
Eigentlich hätte ich dir schreiben sollen, dass du mir dafür gleich einen Sedscript verfassen sollst, welches für mich von einen Website die aktuellen .m3u-Dateien runterlädt und diese mittels sed für die Settings meiner enigma2 Box umwandelt, aber das lass ich mal :wink:
@meillo immer zur Stelle, wo man seine Unterstützung braucht,nochmals vielen herzlichen Dank.
Man lernt nie aus,selbst mit 50+ :D Ich sitze stundenlang vorm PC,mir raucht manchmal der Kopf, um eine Aufgabe mit sed usw. zu lösen.Bis man dann auf eine einfache Lösung kommt :idea:
@all
Danke.

Benutzeravatar
Meillo
Moderator
Beiträge: 4605
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von Meillo » 09.01.2017 11:15:56

Meillo hat geschrieben:

Code: Alles auswählen

sed -n 'h;n;G;s/\n/: /;p'
Den letzten Strichpunkt kann man sich uebrigens noch sparen:

Code: Alles auswählen

sed -n 'h;n;G;s/\n/: /p'
Use ed(1) once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 4605
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von Meillo » 09.01.2017 11:17:11

tHoRax hat geschrieben:einfach toll dieses Forum! :THX:
Das finde ich auch. Diese Aufgabe hat mir viel Vergnuegen bereitet. :THX:
Use ed(1) once in a while!

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

Re: Sed-Einzeiler zur Bearbeitung von Streamdatei

Beitrag von tHoRax » 09.01.2017 11:31:38

@meillo
Doch noch zu früh gefreut :x
Die obere Zeile sollte bestehen bleiben und nur der jeweilige Sendername, welches in der oberen Zeile steht einfach am Ende der nächsten Zeilen mit ":" eingefügt werden.Es war mein Fehler. Die obere Zeile muss immer bleiben.

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
Sollte so formatiert werden.
Erst die Zeile mit #DESCRIPTION NATIONAL GEOGRAPHIC CHANNEL, nur die darauffolgende Zeile erhält den Sendernamen am Ende mit ":" dazu.
Dein Ansatz hat die erste Zeile immer gelöscht,welches mein Fehler war.

Antworten