- ベストアンサー
シェルスクリプトで出力と処理の同時実行
シェルスクリプトで出力コマンドを実行し、キーワードで 抽出してその行数で分岐させようと考えています。 (出力コマンドはミドルウェアのコマンドでアプリケーションの 状態を表示するコマンドです) 出力コマンドの結果を出力させたいのですが下記のような 流れで行おうとしています。 いちいちファイルに保存せずに出力と、行数の変数への格納を 一度でできる方法はないでしょうか。 出力コマンド | grep [キーワード] | tee tmp/file hensuu=wc -l tmp/file case $hensuu in ・・・ よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ぱっと思いつくものとしては、 aaa=`command | awk '/regex/{i++; print $1 |"cat 1>&2"} END{print i}'` /dev/fdが使えれば、 bbb=`command | grep regex | tee /dev/fd/2 | wc -l` perlが使えるなら、 ccc=`command | perl -e 'while (<STDIN>) { if (/regex/) { $i++; print STDERR $_; }} print $i;'` でもtemporary fileにtrap仕掛けておけばその方が安全かもしれない。
その他の回答 (1)
- zionic
- ベストアンサー率39% (31/79)
「hensuu=出力コマンド | grep [キーワード] | wc -l」ではダメでしたか?
お礼
ご回答ありがとうございます。 変数に格納と同時に画面上に抽出結果を表示させたいのですが 教えていただいた方法では画面には出力されませんでした。 変数への格納と画面出力は同時にはできないのでしょうか。
お礼
ご回答ありがとうございます。 スクリプトを始めて1週間の私にはレベルが高いので 一つ一つ調べていきたいと思います。 ありがとうございました。