【发布时间】:2013-09-27 16:55:32
【问题描述】:
我想在两行之间插入一行,前提是第二行匹配某个模式
例如输入文件如下:
pattern (match 1, line 1)
line 2
line 3
line 4
line 5 (before pattern)
pattern (match 2, line 5)
line 7
line 8
line 9
line 10 (before pattern)
pattern (match 3, line 11)
line 12
我想在line 5 和pattern 之间以及line 10 和pattern 之间插入lineToInsert
我试过这个命令:
sed 'N;s/\n\(pattern\)/\n\
lineToInsert\n\1/'
我希望这可以工作,但它只有在匹配的模式仅存在于偶数行时才有效!
那么,我如何使用 sed 或任何其他工具/命令来实现这一点?以及为什么前面的命令不起作用?
【问题讨论】:
-
非常一般的场景,因此很有用。 +1 简洁的解释和您的试用命令。
-
你为什么要使用双亲?取下它们,它应该可以工作。
-
@EdsonMedina 使用括号,因为我需要再次重新插入模式,请注意第二行末尾的
\1。另请查看 Birei 和 potong 的答案,了解为什么它不起作用。