awk < MigStat.stat -F: '{ if ($a == "load")b=8; } $1 == "D0001" && FNR== '$c' {print $b}'
现在我想打印列 $b 中的值,但在这种情况下它打印整行。我想要做的是使用 if 语句中 b 的值来打印该列中的值
awk < MigStat.stat -F: '{ if ($a == "load")b=8; } $1 == "D0001" && FNR== '$c' {print $b}'
现在我想打印列 $b 中的值,但在这种情况下它打印整行。我想要做的是使用 if 语句中 b 的值来打印该列中的值
要传入值,请使用以下-v
选项:
awk -F: -v a=2 -v c=10 '$a=="load"{b=8}$1=="D0001"&&FNR==c{print $b}' MigStat
笔记:
要传入变量,请使用 的-v
选项awk
。
awk
读取您不需要使用重定向的文件。
的结构awk
是condition{block}
。
awk
将变量初始化为0
所以如果b
没有在块中设置$a=="load"{b=8}
那么{print $b}
将{print $0}
是$0
整行的位置。
您不需要冗余分配b=8
. 如果脚本与您在此处发布的一样,则根本不需要$b
。
如果$a, $c
是外壳变量:
awk -F: -v a="$a" -v c="$c" 'a=="load"&&$1=="D0001"&&NR==c{print $8;exit}' MigStat.stat
并在print $8
调用exit;
停止 awk 处理更多行后更好。