如何将bash变量作为awk参数的值传递?

时间:2013-02-14 20:11:34

标签: bash scripting awk

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

例如:

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

我想将$2替换为var变量。我尝试awk -v以及像awk "{ print ${$wordnum} }这样的东西都无济于事。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

你几乎得到了它......

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

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

答案 2 :(得分:0)

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

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

此处,部分{print($和局部变量$ 2和);}的值被连接并提供给awk。

编辑:经过一些建议而不是使用它。也许作为一次性解决方案。最好习惯于马上做到这一点 - 请参阅第一条评论中的链接。