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
Kann man das umgehen ? das AWK sofort reinschreibt ?.
Oder weis jemand wie man das bei mpg123 direkt einstellen kann ?(wenn es geht)
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.
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 mus ich wohl erstmal versuchen die manpages zu verstehen.
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 .
vieleicht bekomme ich das ja irgendwie hin das awk nicht mehr puffert sondern sofort schreibt.
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
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.
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 ?.
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.
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
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