パターンを検索し、最後に発生したパターンを表示しますか?

パターンを検索し、最後に発生したパターンを表示しますか?

以下を含むログファイルがあります。始めるそして閉鎖1日あたりの回数。

最後のパターンが始まり、閉じられたことを見たいです(毎日更新されるファイルの終わりに)。

また、開始と終了の間にすべての行は必要ありません。最後の開始以来、いくつかの行(3行)と最後の終了以降、いくつかの行(3行)のみが必要です。

一行の提案はありますか?

答え1

ログファイルの(抽出された)行を2回反転しても構わない場合は、およびのsed組み合わせを使用できます(参照:grepファイルの行を置き換える方法は?)。

# test case
echo '
startup 1
shutdown 1
startup 2
shutdown 2
startup 3
line 1
line 2
line 3
line 4
line 5
shutdown 3
line 1
line 2
line 3
line 4
line 5
' | 
tail -r | sed -n -e '1,/startup/p' | tail -r | grep -E -A 3 '(startup|shutdown)'


# output
startup 3
line 1
line 2
line 3
--
shutdown 3
line 1
line 2
line 3

答え2

「--after-context」オプションを使用して、sedの代わりにgrepを使用してみてください。

例:

cat logfile | grep --after-context=3 startup

関連情報