这是一个 commands.txt 文件:
START - 'cmd1'
results1a
results1b
results1c
END - 'cmd1'
START - 'cmd2'
results2a
results2b
END - 'cmd1'
START - 'cmd1'
results1d
results1e
results1f
END - 'cmd1'
这是我目前所拥有的:
cat commands.txt | sed -n 's/^START - '"'"'(cmd1)'"'"'$/\1/p'
输出是
cmd1
cmd1
我想要的输出是
results1d
results1e
results1f
我还没有想出如何获得多行匹配。
最佳答案
此行可满足您的需求:
awk "NR==FNR{if(/^START - 'cmd1'/)p=NR;next}FNR>p{if(/^END/)exit;print}" file file
您可以使正则表达式更严格,例如使用 ^ 和 $
,但您知道如何处理它。
关于regex - 如何使用 sed/regex 查找最后的多行匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21688266/