我正在尝试使用sed将两个模式的最后一次出现之间的线打印到另一个文件中。例如,如果file1包含以下内容:
StartPattern
1
2
3
EndPattern
4
5
StartPattern
6
7
8
EndPattern
9
10
StartPattern
11
12
13
EndPattern
14
15
我希望输出为:
11
12
13
我该如何用sed做到这一点?
使用单个awk流程:
awk '/StartPattern/{ f=1;r=""; next }f && /EndPattern/{f=0}
f{ r=(r=="")? $0: r RS $0 }END{ print r }' file > output
output
文件内容:
11
12
13
替代的TAC + AWK解决方案:
tac file | awk '/StartPattern/{exit}/EndPattern/{f=1;next}f' | tac > output
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句