Linuxの標準出力の内容を複数のプロセスに渡す
Pocket

Linuxで、標準出力の内容をそのまま複数のプロセスに渡したい時がある。
そんなときは、teeコマンドを用いると良いだろう。

コマンド | tee >(コマンド1) >(コマンド2) .... | コマンドN

もしくは

コマンド | tee >(コマンド1) >(コマンド2) ... 1 > /dev/null
Sponsored Links

これを用いる事で、以下のようにechoで出力した値に対し、複数の処理を行うことができる。
…まぁ、処理される順番は順不同なので、そこはご愛嬌ということで。

echo 1234 | tee >(sed 's/34/56/g') >(sed 's/34/78/g') | sed 's/34/90/g'

20160103_000015

[root@localhost ~]# echo 1234 | tee >(sed 's/34/56/g') >(sed 's/34/78/g') | sed 's/34/90/g'
1290
1278
1256

 

色々と使いドコロが難しい気もするけど、ファイルに書き出すのであれば(順不同だけど)うまく動作するだろう。
もしGNU parallelが使える環境であれば、そちらのほうがいいかも知れない。GNU Parallel使ったことないけど。

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*