如何用awk / sedreplacestring的第二个实例

我想用variables$ myVar中的值replace文件中stringFooBarr的第二个实例。 AWK似乎没有parsingvariables。 有没有人知道我在这里做错了,请或有一个更好的办法吗?

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

您需要使用-v var=value语法将值传递给awk,并且使用这个逻辑有点不同:

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

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

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