正则表达式 – 在具有以特定模式开始的第二行的两行之间插入行

前端之家收集整理的这篇文章主要介绍了正则表达式 – 在具有以特定模式开始的第二行的两行之间插入行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在两行之间插入一条线,只有当第二行与某个模式匹配时才行

例如输入文件如下:

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

我想在第5行和模式之间以及第10行和模式之间插入lineToInsert

我试过这个命令:

sed 'N;s/\n\(pattern\)/\n\ 
lineToInsert\n\1/'

我希望这可以工作,但只有匹配的模式只存在于偶数行上才有效!

那么,我怎样才能使用sed或任何其他工具/命令来实现这一目标?以及为什么上一个命令不起作用?

解决方法

使用awk你可以做这样的事情:

awk 'NR>1&&/pattern/{print "lineToInsert"}1' file

猜你在找的正则表达式相关文章