Grepはパターンの前に最新の行を探します。

Grepはパターンの前に最新の行を探します。

GREPを使用して「User-Agent:UA」のファイルを検索し、「Via:」を含む最も近い行を抽出したいと思います。私の問題は、時々「Via:」を含むいくつかの行がありますが、最後の行だけが欲しいということです。 。

たとえば、解析するファイルは次のとおりです。

Via: 1.1.1.1  
not relevant line  
...
not relevant line N
User-Agent: UA
...
Via: 2.2.2.2
Via: 3.3.3.3
not relevant line
...
not relevant line N
User-Agent: UA
...
Via: 4.4.4.4
Via: 5.5.5.5
Via: 6.6.6.6
not relevant line
...
not relevant line N
User-Agent: UA

私が望む結果は、「User-Agent:UA」に最も近い「Via:」を含む行です。

Via: 1.1.1.1
Via: 3.3.3.3
Via: 6.6.6.6

どんな助けでも大変感謝します。

ベストアンサー1

awk次のことができます。

 awk '/Via/ {via_line=$0} /User-Agent: UA/ {print via_line}' input_file

したがって、Viaその行を含むすべての行を見つけて保存し、前の行を上書きしてからその行を見つけた場合は、その行について保存した内容をすべてUser-Agent: UA印刷します。Via

おすすめ記事