Hallo Leute, Ich moechte die Ausgabe von cdda2wav fuer ein Shell-Script manipulieren. Befehl: # cdda2wav -v255 -g -B -D/dev/scd2 -N Der bewirkt, dass cdda2wav -v verbose ist, -g gui freundlich(er) -B bulk, alle Audiostuecke einzeln ausliest -D CD reader -N *nichts* auf die Platte schreibt (fuer diesen test hier) dabei benutzt cdda2wav returns (\r) um die Zeile mit der Prozent-Statusanzeige aufzufrischen: [...] 1/ 1/ 1/ 0 28% <-- cdda2wav bleibt bei einem Track immer in der selben Zeile [...] soweit so gut. Fuer mein Script moechte ich nun, dass cdda2wav fuer alles eine *neue* Zeile beginnt, bzw. den output entsprechend aendern. Das bekommt man mit "tr" hin: # cdda2wav -v255 -g -B -D/dev/scd2 -N 2>&1 | tr '[:cntrl:]' '\n' vorher muss man noch stderr nach stdout umleiten, damit die Ausgabe mit durch die Pipe geht (2>&1). So ist die Ausgabe fuer mich ok, die Daten werde *continuierlich* angezeigt. Diese Ausgabe muss ich nun on-the-fly weiter aufbereiten. Dafuer bietet sich awk an. Ein stark vereinfachtes Beispiel sollte so aussehen: # cdda2wav -v255 -g -B -D/dev/scd2 -N 2>&1 \ | tr '[:cntrl:]' '\n' | awk '{ print }' Damit habe ich das Problem aber shcon irgendwie eingebaut: Zuerst dauert es sehr lange, bis ueberhaupt etwas ausgegeben wird, obwohl die ersten paar Zeilen "normale" Zeilen sind: ------------- 86016 bytes buffer memory requested, 4 buffers, 8 sectors #Cdda2wav version 1.9_linux_2.4.3_i686_i686 real time sched. soundcard support Tracks:15 75:10.50 CDINDEX discid: eelMM4vs8miKJxZSzzQ4dm_hHJc- ------------- und die Ausgabe kommt nur noch "schubweise" an, das heisst, es kommen immer ein paar Zeilen, dann eine pause (ca. 1-2 sek), dann kommt wieder was, dann wieder pause... Woran liegt das? Wie kann ich erreichen, dass die Zeilen *continuierlich* ankommen? Wenn ich die Ausgabe in eine Dastei umlenke, und spaeter mit awk nachbearbeite, gibt es diese Verzoegerungen nicht. Das es bei # cdda2wav -v255 -g -B -D/dev/scd2 -N 2>&1 \ | awk '{ gsub("\r","\n"); print }' eine Verzoegerung gibt ist ja AFAIK klar, weil die Anzeige eines ganzen Tracks dann als *eine* Zeile angesehen wird, weil eben ja nur ein newline vorkommt, und awk deshalb alles abarbeitet, wenn der naechste Track drankommt (da gibt cdda2wav ja dann ein newline aus) Ich hoffe ich habe mich nicht zu unklar ausgedruckt, und hoffe *sehr* dass mir jemand einen Tipp geben kann. Danke Gruss -Marc -- | ...and don't forget: Linux rulez! | | | | http://www.links2linux.de <-- Von Linux-Usern fuer Linux-User |