在字符串后面的字符串后面的字符串(即多行模式)替换字符串1的第一个第n次出现

时间:2014-05-28 07:46:39

标签: unix awk sed

我正在尝试使用sed尝试替换多线模式后尝试所有类似的事情,如

sed -i 'N;{string3} s/string1/string2/g;n' 

但我甚至不知道是否可能。有人可以给我一些帮助吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

不确定我是否理解你的问题,但也许这就是你想要的(在awk中):

awk 'x { gsub(/string1/,"string2") ; x=0 } /string3/ { x=1 } 1' file

答案 1 :(得分:1)

您可以尝试此awk

awk '/string3/{n=1;c=1} n && /string1/ && c++ <= 5{ gsub(/string1/,"string2",$0)}1' yourfile

如果这不是您想要的,请使用示例文件和预期输出编辑您的问题。