我有一个文件多次包含相同的模式。我试图sed
仅在该模式第二次出现时执行一系列操作。该文件如下所示:
pattern
line 1
line 2
line 3
...
pattern
line 4
line 5
line 6
...
pattern
line 7
line 8
line 9
我想要的输出是line 4
.我目前有:
sed -n '/pattern/{n;p;q;}' file
印刷line 1
。我如何修改我的命令来获取line 4
?我正在使用 macOS 版本的sed
.
使用
awk
,计算我们匹配的次数,并在计数到二时pattern
使用它来读取下一行。getline
打印该行后,我们可以退出。Perl 中的类似方法:
假设我们知道该模式出现在第一行,
sed
解决方案是删除从第一行到下一行匹配该模式的所有行,然后打印剩余行中的第一行(并退出):尝试这个命令:
对于第五个实例,使用 5p 而不是 2p 等。
几乎不需要解释。