ログを見て、プログラムが3回試みたが失敗したことを確認したいと思います。
tail -f file.log | grep --line-buffered program\ failed\ string
行数がgrep
3になったらエラーを返したいです。
どうすればいいですか?
ベストアンサー1
アッストリームをスキャンする素晴らしいツールです。
あなたの例とは異なり、終了するまでログを表示するにはすべての行を表示する必要があると思います。grepエラー行のみが表示されます。
tail -f file.log | awk '
BEGIN {
count = 0
}
{
print($0)
if ($0 ~ /program failed/) {
count++
if (count == 3) {
exit(1)
}
}
}
'
awkコードを次に移動できます。tail.awktail -f file.log | awk -f tail.awk
ご希望の場合はお電話ください。
同様に、より簡潔な形で:
tail -f file.log | awk '1; /program failed/ && ++count == 3 { exit 1 }'