我正努力解决这个问题。
./ analyze.sh 9
lField=$1 (Command line argument)
cat "$(pwd)/results1/DSFTPTCPstats.6" | awk '{ print $lField }'
我想要第9个字段的值,但它不起作用。在“打印”部分尝试了不同的组合,无法解决......真的很有帮助。
由于
答案 0 :(得分:1)
Shell环境变量不是awk
环境变量:
您可以使用-v
标志将其中一个转换为另一个:
pax> a=1;b=2;awk -vb=$b 'END{print a;print b}' </dev/null
2
在您的特定情况下,此代码段可能会更好地显示:
pax> lField=2;echo "A B C" | awk '{print $lField}'
A B C
pax> lField=2;echo "A B C" | awk -vlField=$lField '{print $lField}'
B
在第一种情况下,$lField
被视为$0
,因此它会打印整行。第二种情况lField
已正确设置为2
,因此仅打印第二列B
。
答案 1 :(得分:0)
如果你坚持做这样的事情
awk "{print "\$"${lField}}"