awk < MigStat.stat -F: '{ if ($a == "load")b=8; } $1 == "D0001" && FNR== '$c' {print $b}'
现在我希望打印出$ b列中的值,但在这种情况下,它会打印整行。 我想要做的是使用if语句中的b值来打印该列中的值
答案 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处理更多行。