Grep 查找模式之前最近出现的行

1 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
Run Code Online (Sandbox Code Playgroud)

我想要的结果是包含最接近“User-Agent:UA”的“Via:”的行

Via: 1.1.1.1
Via: 3.3.3.3
Via: 6.6.6.6
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

Eri*_*ouf 5

awk你可以这样做:

 awk '/Via/ {via_line=$0} /User-Agent: UA/ {print via_line}' input_file
Run Code Online (Sandbox Code Playgroud)

因此,我们将找到包含Via并存储该行的每一行,覆盖任何先前的行,然后当我们找到该行时,User-Agent: UA打印我们为该行存储的所有Via内容。