我想用awash变量替换awk命令中的变量。
例如:
var="one two three"
echo $var | awk "{print $2}"
我想将$2
替换为var
变量。我尝试awk -v
以及像awk "{ print ${$wordnum} }
这样的东西都无济于事。
答案 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。