我想用bash变量替换awk命令中的一个变量。
例如:
var="one two three"
echo $var | awk "{print $2}"
我想用var
变量替换$2
。我试过awk -v
和类似awk "{ print ${$wordnum} }
的东西,但都没有用。
截然不同的方法:
$ echo $var
one two three
$ field=3
$ echo $var | awk -v f="$field" '{print $f}'
three
$ field=2
$ echo $var | awk -v f="$field" '{print $f}'
two
你几乎得到了…
$ myfield='$3'
$ echo $var | awk "{print $myfield}"
three
第一行的硬引号阻止外壳对$3
进行解释。第二行的软引号允许变量替换。
您可以将awk语句的部分与变量连接起来。也许这就是你想要的脚本文件:
echo $1|awk '{print($'$2');}'
这里,部分{print($
以及局部变量$2和);}
的值被连接并被赋予awk。
编辑:经过一些建议,还是不要用这个。也许是一次性解决方案。最好马上就习惯这样做——请参阅第一条评论中的链接。