複数のオプション(リアルタイム出力)でgrepを使用する方法は?

複数のオプション(リアルタイム出力)でgrepを使用する方法は?

たとえば、私がやるとき

sudo tcpdump | grep -E '.dev:8888|ads' | grep -v 'adsl'

ads.google.com何らかの理由ですべての出力が抑制されます。たとえば、アクセスすると何も表示されず、削除するとデフォルトのgrep -vコマンドが機能します。

ただし、次の内容でファイルを作成しようとすると:

test
test2

grep -E 'test|test2' | grep -v 'test2'私が望む結果を得ますか? (test)。更新を継続する際の違いは何grepですか。複数のオプションを使用して出力を変更するにはどうすればよいですか?

答え1

行バッファリングに問題がある可能性があります。次のように、tcpdump中間grepコマンドに出力をラインバッファリングするように指示します。

sudo tcpdump -l | grep --line-buffered -E '.dev:8888|ads' | grep -v 'adsl'

また、見ることができますパイプラインでバッファリングをオフにするこれらのコマンドオプションが利用できない場合の一般的な回避策です。

関連情報