grep --line-buffered、最初のgrepの結果を使用して同じバッファを取得できますか?

grep --line-buffered、最初のgrepの結果を使用して同じバッファを取得できますか?

次の形式のログファイルを検索しています。

<date> <connection from: ip> <new connection ID> <info> 
<date> <connection ID> <info> 

次のコマンドを使用してIPを取得しましたが、このログファイルから接続IDを取得するのに数分かかります。

tail -f logfile | grep ip --line-buffered 

まず、grepを使用してIPを検索してから、接続IDに基づいて引き続き検索できますか?

接続IDは予測不可能であり、一致後のログの次の行は必ずしも私のIPに接続されている接続IDではありません。

答え1

いいえ。

するとき

tail -f logfile | grep "ip-address" --line-buffered 

することができますただパターンに一致する行を取得しますip-address。その後、パイプラインをさらに呼び出すと、grep元のログファイルの他の行を見ることはできません。

ログファイルのいくつかの例を見ないと、(盲目的に)動作する解決策を見つけることは困難です。

答え2

grepコマンドでさまざまなパターンを使用できます。たとえば、「ip」と「connection id」を含む2行をgrepできます。

tail -f logfile | grep -E 'ip|connection ID' --line-buffered 

関連情報