我有一个类似于下面的文件,我想打印两个给定模式pat1和pat2之间的行。

1
2
PAT1
3
4
PAT2
5
6
PAT2
7
PAT2
8
9
PAT2
10

这里pat1出现一次,而pat2出现多次。我想打印pat1和pat2第3次出现之间的行
我使用下面的命令来打印在这种情况下不起作用的模式
awk '/PAT1/PAT2/'

我期望下面的输出
PAT1
3
4
PAT2
5
6
PAT2
7
PAT2

我该怎么做?

最佳答案

显然这是有效的:

$ awk '/PAT1/,/PAT2/&&++c==3' file
PAT1
3
4
PAT2
5
6
PAT2
7
PAT2

请参阅对其工作原理的评论。

关于linux - 在两个图案之间打印行并多次出现第二个图案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50484387/

10-11 19:44