如何使用 "awk" 命令检索特定字段,但字段编号在运行时给出?
How to use "awk" command to retrieve particular field, but the field number is given in runtime?
我正在努力解决这个问题。
./analyze.sh 9
内部脚本:
lField= (Command line argument)
cat "$(pwd)/results1/DSFTPTCPstats.6" | awk '{ print $lField }'
我想要第 9 个字段的值,但它不起作用。在 'print' 部分尝试了不同的组合,无法解决...真的很有帮助。
谢谢
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
被视为 [=15=]
,因此它会打印整行。第二种情况 lField
正确设置为 2
所以它只打印第二列 B
.
如果你坚持要这样做
awk "{print "$"${lField}}"
我正在努力解决这个问题。
./analyze.sh 9
内部脚本:
lField= (Command line argument)
cat "$(pwd)/results1/DSFTPTCPstats.6" | awk '{ print $lField }'
我想要第 9 个字段的值,但它不起作用。在 'print' 部分尝试了不同的组合,无法解决...真的很有帮助。
谢谢
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
被视为 [=15=]
,因此它会打印整行。第二种情况 lField
正确设置为 2
所以它只打印第二列 B
.
如果你坚持要这样做
awk "{print "$"${lField}}"