grep --line-X行までバッファリングされますか?

grep --line-X行までバッファリングされますか?

ログを見て、プログラムが3回試みたが失敗したことを確認したいと思います。

tail -f file.log | grep --line-buffered program\ failed\ string

行数がgrep3になったらエラーを返したいです。

どうすればいいですか?

ベストアンサー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 }'

おすすめ記事