awk oder andere möglichkeit ?

Brusko

Well-Known Member
Guten Tag und erstmal frohe Restweihnachten :-)

Ich möchte gerne das programm mpg123 verwenden um Internetstreams abzuspielen, mit
mpg123 -R </meinPfad/meinePipe
kann ich MPG mit der eingabe von z.b
echo LOAD <internetstream> >/meinPfad/meinePipe
steuern. Das problem ist nur das mir dann MPG123 die ganze zeit auch die laufzeot der streams ausgibt und wenn ich das mit >/meineDatei in meine Logdatei schreibe wird die ja viel zulang.

Nun dachte ich mir ich könnte wohl mit
mpg123 -R </meinPfad/meinePipe | awk '/@I/' >/meinPfad/meineDatei
mir nur bestimmte zeilen in meine Logdatei schreiben. Aber das geht nicht.
AWk schreibt erst die daten in die datei wenn ich mpg123 mit killall mpg123 beende.
Awk schreibt wohl erst nachdem die Pipe von mpg123 geschlossen wurde :-(
Kann man das umgehen ? das AWK sofort reinschreibt ?.

Oder weis jemand wie man das bei mpg123 direkt einstellen kann ?(wenn es geht)

Mfg Michael
 
Also der output wäre z.b :
@I ICY-NAME Sendername
@I ICY-META titel
@F hier die laufzeit die pro sekundenwohl 5 mal ausgegeben wird.

Ich hätte es gerne dann so gewollt das man ebend nur alle zeilen mit @I sofort in eine datei oder Pipe gegeben wird.

Ich habe nun auch eine Lösung mit Hilfe von jemanden gefunden !
Wenn man weis eigentlich ganz einfach (hoffe das ist auch die richtige).
mpg123 -R </meinPfad/meinePipe | awk '/@I/' {print $0 fflush()} >/meinPfad/meineDatei
Mit fflush() wird awk gezwungen nicht erst im Puffer zu schreiben sondern die gefilterte ausgabe direkt in die datei zu geben.

Hintergedanke des ganzen ist es einfach , ich würd mpg123 -R über script oder Cron zu starten und in einem c++ könnte man diesen dann über z.b LOAD stream oder PAUSE usw steuern.
Ich glaube vie volumen und töne ging auch.
und man kann ebend dann Diese Pipe/Datei auch einfacher auslesen

Wenn jemand natürlich noch eine gute Idee dazu hat gerne raus damit :-)

mfg Michael
 
Zuletzt bearbeitet:
Zurück
Oben