如何用awk / sed替换字符串的第二个实例

时间:2015-07-18 09:00:51

标签: linux bash unix awk sed

我试图用变量$ myVar中的值替换文件中字符串FooBarr的第二个实例。 AWK似乎没有解析变量。有没有人知道我在这里做错了或者有更好的前进方向吗?

awk '/FooBarr /{c++;if(c==2){sub("FooBarr ",$myVar);c=0}}1' myFile

1 个答案:

答案 0 :(得分:2)

您需要使用-v var=value语法将值传递给awk,并以不同的方式使用此逻辑:

awk -v myVar="$myVar" '/FooBarr /{c++} c==2{sub("FooBarr ", myVar); c=0} 1' myFile

或者更好地从命令行传入搜索词:

awk -v s='FooBarr ' -v myVar="$myVar" '$0~s{c++} c==2{sub(s, myVar); c=0} 1' myFile