模式1
一个
b
模式2
CD
模式1
重新
模式2
GH
模式1
EF
模式2
QW
ë
我可以通过来显示所有匹配的模式 sed -n'/ pattern1 /,/ pattern2 / p'
选择第二个匹配模式或按选择任何第N个
awk -vM = 2'(x + = / pattern1 /)== M&& x + = / pattern2 /'文件
模式1
重新
pattern2
仅打印最后匹配的模式
awk'x + = / pattern1 | pattern2 / {!y ++&& B =“”; B = B?B“\ n”$ 0:$ 0; x == 2&& y = x = 0} END {print B}'档案
模式1
EF
pattern2
但是我如何打印例如最后/第2个或第N个匹配的块模式?
模式1
重新
模式2
模式1
EF
pattern2
答案 0 :(得分:0)
这可能适合你(GNU sed):
sed -n '/pattern1/,/pattern2/{p;/pattern2/{H;x;s///2;x;T;q}}' file
这将打印pattern1
到pattern2
的前2个匹配项,然后退出。
sed -nr '/pattern1/,/pattern2/H;$!b;x;s/.*((pattern1.*){2})$/\1/p' file
这会打印pattern1
到pattern2
的最后2场比赛。