Ich versuche, ein einfaches Skript um Lame zu schreiben, um das Programm für meine spezifischen Verwendungen anzupassen. Was ich tun möchte, ist nur die prozentuale Vollständigkeit aus der Lame-Ausgabe zu analysieren.grep'ing Ausgabe von kontinuierlich aktualisierten Ausgang
Hier ist, was die Zeile wie jetzt aussieht:
./lame --nohist ~/Desktop/Driver.wav ~/Desktop/Driver.mp3 2>&1| egrep -o "\([0-9\%]+\)"
Aber das gibt nichts zurück. So sieht die Ausgabe von Lame aus:
LAME 3.99 (alpha 1, Jun 4 2009 19:42:31) 32bits (http://www.mp3dev.org/) warning: alpha versions should be used for testing only Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz Encoding /Users/jkubicek/Desktop/Driver.wav to /Users/jkubicek/Desktop/Driver.mp3 Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3 Frame | CPU time/estim | REAL time/estim | play/CPU | ETA 1500/8765 (17%)| 0:02/ 0:15| 0:03/ 0:17| 14.654x| 0:14
Die letzte Codezeile wird dynamisch aktualisiert, wenn die Datei konvertiert wird. Wenn ich diesen genauen Text in meinen Grep kopiere/einfüge/zurückliege, finde ich die 17% ganz gut, aber wenn ich ihn richtig benutze, findet er zilch.
Edit: Wenn ich die Ausgabe von lame in eine Textdatei werfen, hier ist das, was die Ergebnisse wie folgt aussehen:
lameout.txt http://nothing2fancy.com/images/forum_images/lameout.txt-20090621-095324.png
Es sieht aus wie ich die Ausgabe in eine temporäre Datei drücken könnte und lesen der Prozentsatz, der dort erreicht wird, aber das fühlt sich peinlich an, als sollte es einen eleganteren Weg geben, dies zu tun.
Danke für den Vorschlag. Ich überprüfte die Ausgabedatei und es enthält alle einzelnen Prozentaktualisierungen in separaten Zeilen. Also sollte jedes Lesen möglich sein. – kubi
Es ist auch möglich, dass lame Ihre Figuren ausgibt und dann^H (oder Backspaces) ausgibt. Daher kann grep keinen Wagenrücklauf erhalten, um eine EOL identifizieren zu können. Lame kann auch seine Ausgabe ändern, abhängig davon, wohin stdout gesendet wird –