mpg123 und awk oder andere möglichkeit

Guten Tag und erstmal frohe Restweihnachten :smile:

Ich möchte gerne das programm mpg123 verwenden um Internetstreams abzuspielen, mit

mpg123 -R >/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/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 :frowning:
Kann man das umgehen ? das AWK sofort reinschreibt ?.

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

Mfg Michael

Es hängt offensichtlich mit der üblichen Pufferung zusammen. Wenn ein Programm auf ein Terminal schreibt, wird zeilenweise gepuffert, andernfalls wird voll gepuffert. Mit dem flush-Kommando kann es beeinflusst werden.

http://www.delorie.com/gnu/docs/gawk/gawk_137.html

Viele Grüße
Holger

Hallo Michael,

Ich möchte gerne das programm mpg123 verwenden um
Internetstreams abzuspielen, mit

mpg123 -R

Vielen Dank für deine Anwort
Ich hatte mir sowas in der Richtung schon gedacht
den Flush befehl kannte ich aber noch nicht und werde mich damit mal beschäftigen wie man ihn anwendet.
Da ich damals beim Englisch in der Schule gerne abwesend
war :smile: mus ich wohl erstmal versuchen die manpages zu verstehen.

Wünsche frohe Restweihnachten.

Mfg Michael

Guten morgen Horst,
ich bedanke mich für deine Anwort und den Link.
Diesen kannte ich schon , mein problem ist da wohl auch, das ich beim Englsich in der Schule gerne etwas anderes im Kopf hatte :smile:.
vieleicht bekomme ich das ja irgendwie hin das awk nicht mehr puffert sondern sofort schreibt.

frohe rest Weihnachten
Michael

DANKE: mpg123 und awk oder andere möglichkeit
Vielen Dank Holger,
ich bin ein großen schritt weiter gekommen, denn mit
awk ‚/@I/‘ {print $0 fflush() >/meinPfad/meineDatei
schreibt er sofort die gefilterte ausgabe in die Datei

Vielen Dank und falls man sich nicht mehr liest ein
guten rutsch
Mfg Michael

Guten Tag und erstmal frohe Restweihnachten :smile:

Hallo und auch Frohe Weihnachten nachträglich !

Awk schreibt wohl erst nachdem die Pipe von mpg123 geschlossen
wurde :frowning:
Kann man das umgehen ? das AWK sofort reinschreibt ?.

Generell bringt man den awk mit
fflush()
dazu, den output rauszuschreiben.

Ich hoffe, das hilft erstmal weiter.

Hi,
also awk is so und so etwas langsam.
nimm sed. z.B. sed -n '/wie bei awk/'p > DATEI
sed -n heisst standartmaessig keine Ausgabe,
‚stream‘ #kann auch Datei
p heisst dass was auf /wie bei awk/ passt ausgeben.

Bsp Ausgabe1 | sed -n '/^(ABC)3*$/'p
gib alles aus was dreimal ABC enthaelt

bin mir aber nich 100% sicher, bin zur Zeit im Urlaub,
naja und keine Bücher dabei.

Wenn Du nochmal Hife brauchst, schreib.

MfG
Lemmich

Hallo,

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 :frowning:
Kann man das umgehen ? das AWK sofort reinschreibt ?.

awk puffert seinen Output. Erst wenn hinreichend viel zusammengekommen ist, wird geschrieben. In manchen awk-Implementierungen kann man mit fflush den Puffer direkt ausgeben lassen, also etwa so:

mpg123 -R logfile

Das Original-awk (POSIX) kann das nicht. GNU awk aber z.B. schon.

Ciao,

Michael

Hallo Michael,

Mit Streams und Co kenne ich mich nicht persönlich aus, aber mit der Unix-
Kommandozeile…

mpg123 -R /meinPfad/meineDatei
nur bestimmte Zeilen in meine Logdatei schreiben. Aber das
geht nicht. AWk schreibt erst die daten in die datei wenn ich […]

Awk schreibt wohl erst nachdem die Pipe von mpg123 geschlossen
wurde :frowning:

Gut erkannt; ich denke, AWK ist für Deine Anwendung zu hoch gegriffen

Kann man das umgehen ? das AWK sofort reinschreibt ?.

Schaue Dir mal alternativ den „SED“ an (man sed) - Ich meine, dass der „Stream
EDitor“ sofort arbeitet und somit auch innerhalb einer Pipe-Verknüpfung gute
Dienste tut.
Je nachdem, wie „simpel“ das Kriterium ist, kann eventuell auch schon der „grep“
Befehl Deine Bedürfnisse erfüllen:
cat /etc/passwd | grep „^root“ > nur_der_root_aber_nicht_mailroot.txt
cat /etc/passwd | grep -v „/sbin/nologin“> Nur_nicht-daemons.txt

Viel Erfolg,
Martin