grepからawkへのパイプは機能しません。

grepからawkへのパイプは機能しません。

grep連続tailファイルログを作成し、1n行から2番目の単語を取得しようとします。サンプルファイル:

$ cat > test.txt <<EOL
Beam goes blah
John goes hey
Beam goes what?
John goes forget it
Beam goes okay
Beam goes bye
EOL
^C

今、私は次のようにしますtail

$ tail -f test.txt
Beam goes blah
John goes hey
Beam goes what?
John goes forget it
Beam goes okay
Beam goes bye
^C

私がgrepこれを行うとtail

$ tail -f test.txt | grep Beam
Beam goes blah
Beam goes what?
Beam goes okay
Beam goes bye
^C

しかし、これawkを行うとgrep

$ tail -f test.txt | grep Beam | awk '{print $3}'

どんなに待っても何も起こりません。私はこれがストリームがどのように機能するかと関係があると思います。

誰に手がかりがありますか?

ベストアンサー1

grepの出力バッファです。を使用して無効にできますgrep --line-buffered

しかし、grepの出力をawkにパイプする必要はありません。 awkは独自に正規表現パターンマッチングを実行できます。

tail -f test.txt | awk '/Beam/ {print $3}'

おすすめ記事