2

我想用 bash 变量替换 awk 命令中的变量。

例如:

var="one two three"    
echo $var | awk "{print $2}"

我想$2var变量替换。我已经尝试awk -v过以及awk "{ print ${$wordnum} }无济于事的事情。

4

3 回答 3

5

明显不同的方法:

$ 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
于 2013-02-14T20:24:32.193 回答
2

你几乎得到它...

$ myfield='$3'
$ echo $var | awk "{print $myfield}"
three

第一行的硬引号阻止$3了 shell 的解释。第二行的软引号允许变量替换。

于 2013-02-14T20:14:59.617 回答
0

您可以将 awk 语句的一部分与变量连接起来。也许这是您在脚本文件中想要的:

echo $1|awk '{print($'$2');}'

在这里{print($,局部变量 $2 和的部分和值);}​​被连接起来并提供给 awk。

编辑:经过一些建议,不要使用它。也许作为一次性解决方案。最好立即习惯这样做 - 请参阅第一条评论中的链接。

于 2013-02-14T20:56:29.530 回答