linux - 在多次出现第二个图案的两个图案之间打印线条

标签 linux shell awk sed

我有一个如下所示的文件,我想打印两个给定模式 PAT1 和 PAT2 之间的线条。

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

此处 PAT1 出现一次,但 PAT2 出现多次。我想打印 PAT1 和第三次出现的 PAT2 之间的行

我使用下面的命令在模式之间打印,在这种情况下不起作用

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/

相关文章:

linux - 是否有与 freebsd hwpmc 等效的 linux/端口?

linux - 我怎样才能*仅*获得 bash 中磁盘上的可用字节数?

linux - 如何在 Linux Shell 中显示出现在连续行中的日期差异?

linux - 如何在多个文件上使用 awk?

linux - 如何使这个 AWK 命令不区分大小写?

c++ - 在具有低级别访问权限的随身碟上写入

linux - axis 1.4 linux求助-happyaxis不开心 AXISCLASSPATH全错了?

awk-1-liner 对 stdin 中的数字求和,同时打印某些文本的出现次数以及其他任意文本

linux - 在 R 中运行系统命令,然后将输出写入文件

windows - 谷歌浏览器静默安装