我的文件是这样的:
/开始模式/
第一场比赛
/结束模式/
其他文字
/开始模式/
第二场比赛
/结束模式/
其他文字
/开始模式/
这就是我
想要打印出来
/结尾
图案/
其他文字
如何使用 awk 打印出最后一场比赛?我只知道如何打印所有这些匹配项。
取决于您是否想要打印包含分隔符的行:
$ awk '
/begin pattern/ { rec=""; f=1 }
f { rec=rec $0 ORS; if (/end pattern/) {last=rec; f=0} }
END { printf "%s", last }
' file
/begin pattern/
This is the one I want to print out
/end pattern/
or:
$ awk '
f { if (/end pattern/) {last=rec; f=0} rec=rec $0 ORS }
/begin pattern/ { rec=""; f=1 }
END { printf "%s", last }
' file
This is the one I want to print out
这确保您打印的是一个以begin pattern
并以end pattern
所以你不只是打印一系列后面的行start pattern
没有end pattern
如果输入文件末尾存在这样的内容。如果输入中不存在匹配的块,它还可以确保您不会打印空行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)