私は特定の目的のためにプログラムをカスタマイズするためにLameの周りに簡単なスクリプトを書こうとしています。私がしたいのは、Lame出力から完全なパーセンテージだけを解析することです。継続的に更新された出力からのgrep'ing出力
はここでラインが今のようになります:
./lame --nohist ~/Desktop/Driver.wav ~/Desktop/Driver.mp3 2>&1| egrep -o "\([0-9\%]+\)"
しかし、それは何も返しません。 Lameの出力は次のようになります。
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
最後のコード行は、ファイルの変換時に動的に更新されます。この正確なテキストを私のgrepにコピー/貼り付け/エコー/パイプすると17%の精度が得られますが、実際に実行するとzilchが見つかります。
編集: 私はテキストファイルにラメからの出力を投げるときは、ここでの結果はどのように見えるかです:
lameout.txt http://nothing2fancy.com/images/forum_images/lameout.txt-20090621-095324.png
私は一時ファイルへの出力をプッシュして読むことができるように見えますそこから完成したパーセンテージが、これを行うもっとエレガントな方法があるように、それは不自然に感じます。
お寄せいただきありがとうございます。私は出力ファイルをチェックし、個々のパーセンテージアップデートを別々の行に保持しています。だから、それぞれを読むことが可能でなければなりません。 – kubi
lameがあなたの数字を出力し、^ H(またはバックスペース)を出力することも可能です。したがって、grepはEOLを識別できるようにキャリッジリターンを取得しないことがあります。 Lameはまた、stdoutがどこに送られているかによって出力を変えるかもしれません –