2016-10-09 14 views
0

私は監視スクリプトを作成しようとしており、特別なイベントの場合には指定された人に連絡するために、最初のegrepコードはうまくいきましたが、grepがwhileループで動作しない

while true; do 
    tail -f /Testing/script/errors | egrep -o --line-buffer "Timeout" >> wch.txt; 
    cat /Testing/script/contacts.txt|egrep --line-buffer "FB" | cut -f2 -d ":" >> mail.txt; 
    sleep 5 
done 

contact.txt:

FB:[email protected] グーグル:[email protected]

答えて

0

--line-bufferとしてはそのようなオプションはありませんが、おそらくあなたは--line-bufferedを意味しました、 それは GNU-ism。

grep --line-buffered 'FB' /Testing/script/contacts.txt | cut -f2 -d ":" >> mail.txt 

もし拡張正規表現パターンを使用していないので、egrepgrep -E)を使用しても意味がありません:

grep

を簡略化することができます。また、 catと配管が不要で、 grepは引数としてfilenameをとります。

が1と同様grepのように書くことができる。

tail -f /Testing/script/errors | grep -o --line-buffered "Timeout" >> wch.txt 

だからあなたwhile構築:2行目に

while :; do 
    tail -f /Testing/script/errors | egrep -o --line-buffer "Timeout" >> wch.txt 
    grep --line-buffered 'FB' /Testing/script/contacts.txt | cut -f2 -d ":" >> mail.txt 
    sleep 5 
done 
+0

以下のように私に言ったとおりに動作しませんでした。 –

+0

true true do tail -f/Testing/script/errors | egrep -o --line-buffer "タイムアウト" >> wch.txt; grep -line-buffered 'FB' /Testing/script/contacts.txt | "-f2 -d": ">> mail.txt sleep 5 done –

+0

最初のgrepはうまくいきましたが、2番目のgrepはまだ動作していないかもしれません。 –

0

-fフラグがループをブロックしています。ファイルが大きくなると、出力に/Testing/script/errorsに改行が追加されます。

+0

私はそれを削除した後でもうまくいかなかった –

関連する問題