我想用 bash 变量替换 awk 命令中的变量。
例如:
var="one two three"
echo $var | awk "{print $2}"
我想$2
用var
变量替换。我已经尝试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
了 shell 的解释。第二行的软引号允许变量替换。
您可以将 awk 语句的一部分与变量连接起来。也许这是您在脚本文件中想要的:
echo $1|awk '{print($'$2');}'
在这里{print($
,局部变量 $2 和的部分和值);}
被连接起来并提供给 awk。
编辑:经过一些建议,不要使用它。也许作为一次性解决方案。最好立即习惯这样做 - 请参阅第一条评论中的链接。