如何使用 awk 打印出最后一个模式范围?
我的文件是这样的:
/开始模式/
第一个匹配
/结束模式/其他文字
/开始模式/
第二个匹配
/结束模式/其他文字
/开始模式/
这是我的 想要打印
/end 图案/
其他文字
如何使用 awk 打印出最后一个匹配项?我只知道如何打印所有这些匹配项。
My file is like this:
/begin pattern/
first match
/end pattern/other text
/begin pattern/
second match
/end pattern/other text
/begin pattern/
This is the one I
want to print out
/end
pattern/
other text
How can I print out the last match using awk? I just know about how to print out all these matches.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
取决于您是否想要打印包含分隔符的行:
或者:
这确保您打印的是一个以
begin pattern
开头并以end pattern
结尾的块,这样您就可以如果输入文件末尾存在这样的内容,不要只打印没有结束模式
的开始模式
之后的一堆行。如果输入中不存在匹配的块,它还可以确保您不会打印空行。Depending on if you want the lines containing the delimiters printed or not:
or:
That ensures that what you print is a block starting with
begin pattern
and ending withend pattern
so you don't just print a bunch of lines following astart pattern
with noend pattern
if such exists at the end of your input file. It also ensures you don't print a blank line if no matching block exists in the input.存储当前匹配并使用 END 块将其打印出来:
如果 /begin pattern/ 和 /end pattern/ 之间只有一行,则此方法有效。
Store the current match and use the END block to print it out:
This works if there is only one line between /begin pattern/ and /end pattern/.