Linux 如何匹配Bash中最后两个字符串之间的所有行?
我有一个日志文件,其中有一些重复的关键字,如“开始”和“结束”,中间有几行(包括空格)。我想对这两个标记之间的所有行进行grep处理——但仅限于最后一个递归。例如:Linux 如何匹配Bash中最后两个字符串之间的所有行?,linux,bash,unix,Linux,Bash,Unix,我有一个日志文件,其中有一些重复的关键字,如“开始”和“结束”,中间有几行(包括空格)。我想对这两个标记之间的所有行进行grep处理——但仅限于最后一个递归。例如: Start 1 2 End Start A B C Start Three End 使用awk时,结果应仅为“三”: awk '/Start/{s=""; p=1; next} p && /End/{p=0} p{s=s $0 ORS} END{printf "%s", s}' file Thre
Start
1
2
End
Start
A B
C
Start
Three
End
使用awk时,结果应仅为“三”:
awk '/Start/{s=""; p=1; next} p && /End/{p=0} p{s=s $0 ORS} END{printf "%s", s}' file
Three
或者使用tac
和awk
:
tac file | awk '/End/{p=1; next} p && /Start/{exit} p' | tac
Three
我宁愿在
sed
或awk
中这样做。这可以接受吗?可以,无论是sed
还是awk
都可以。如果有多行,您也需要tac
结果