我试图用变量$ myVar中的值替换文件中字符串FooBarr的第二个实例。 AWK似乎没有解析变量。有没有人知道我在这里做错了或者有更好的前进方向吗?
awk '/FooBarr /{c++;if(c==2){sub("FooBarr ",$myVar);c=0}}1' myFile
答案 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