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}'