想要在awk命令中使用其中的变量

时间:2013-04-08 12:18:18

标签: linux awk conditional-statements

awk < MigStat.stat -F: '{ if ($a == "load")b=8; } $1 == "D0001" && FNR== '$c' {print $b}'

现在我希望打印出$ b列中的值,但在这种情况下,它会打印整行。 我想要做的是使用if语句中的b值来打印该列中的值

2 个答案:

答案 0 :(得分:2)

要传入值,请使用-v选项:

awk -F: -v a=2 -v c=10 '$a=="load"{b=8}$1=="D0001"&&FNR==c{print $b}' MigStat

注意:

  • 要传入变量,请使用-v的{​​{1}}选项。

  • awk读取您不需要使用重定向的文件。

  • awk的结构为awk

  • condition{block}将变量初始化为awk,因此如果0未设置b,那么$a=="load"{b=8}将为{print $b}其中{print $0}是整行。

答案 1 :(得分:1)

您无需冗余分配b=8。如果脚本与您在那里发布的内容类似,则根本不需要$b

如果$a, $c是shell变量:

awk -F: -v a="$a" -v c="$c" 'a=="load"&&$1=="D0001"&&NR==c{print $8;exit}' MigStat.stat

并在print $8调用exit;后停止awk处理更多行。