2016-01-13 14 views
6

は私がやろうとしていることである:プロセスの出力をloggerコマンドとheadコマンドにパイプする方法は?

  • スタートテキスト継続的

  • パイプを出力プロセスという二つのコマンドに出力:

    1. ロガースクリプト
    2. " head 'コマンドを使用して、最初の行に最初のプロセス出力を保存することができます。私がこれまで試したどのよう

(unsuccessfuly)です:

./myProgram | tee > (myLogger log.txt) | head > firstLines.txt

問題はmyProgramとすぐheadが終了すると終了していることです。

-iteeコマンドに使用しても、myProgramを実行し続けることができません。

ロガーが受信テキストを既存のファイルに追加することがあるため、この場合は head log.txt > firstLines.txt を実行しても機能しません。このよう

+1

切り替え順序の周り。 'head'には'>(...) 'を、ロガーには通常のパイプを使用しますか? –

+0

これも私の最初の推測でしたが、私はそれを試しても問題は解決しません。 –

+0

それほどエレガントではない解決策: 一時ファイルに出力し、その一時ファイルをlog.txtに追加してから一時ファイルを削除してから、テンポラリファイルを削除してください – Bartez

答えて

1

あなたは両方を行うために、代替としてawkを使用することができます。

./myProgram | 
    awk 'NR<=10{print > "firstLines.txt"} NR>10{close("firstLines.txt")} 1' > log.txt 
+1

;-) –

+1

笑:)はい私は知っている、このスレッドを遅く開​​いた。 – anubhava

+1

完璧に動作します!ありがとうございました! – Stefano

1

は多分:あなたがheadの出力を送信する場所yesはあなたのプログラム、fileある

yes | awk 'FNR<4 {print >>"file"; close("file")} 1' | more 

であり、moreはあなたのロガーです。

関連する問題