Linux 要在awk命令中使用内部变量(如果在外部) awk
现在我想打印列$b中的值,但在本例中,它打印整行。Linux 要在awk命令中使用内部变量(如果在外部) awk,linux,awk,conditional-statements,Linux,Awk,Conditional Statements,现在我想打印列$b中的值,但在本例中,它打印整行。 我要做的是使用if语句中的b值来打印该列中的值要传入值,请使用-v选项: awk < MigStat.stat -F: '{ if ($a == "load")b=8; } $1 == "D0001" && FNR== '$c' {print $b}' 注: 要传入变量,请使用awk的-v选项 awk读取不需要重定向的文件 awk的结构是condition{block} awk将变量初始化为0,因此如果b未在块中设置$
我要做的是使用if语句中的b值来打印该列中的值要传入值,请使用
-v
选项:
awk < MigStat.stat -F: '{ if ($a == "load")b=8; } $1 == "D0001" && FNR== '$c' {print $b}'
注:
- 要传入变量,请使用
的awk
选项-v
读取不需要重定向的文件awk
的结构是awk
condition{block}
将变量初始化为awk
,因此如果0
未在块中设置b
,则$a==“load”{b=8}
将是{print$b}
,其中{print$0}
是整行$0
- 您不需要冗余地分配
b=8
。如果脚本与您在那里发布的脚本类似,则根本不需要$b
如果$a,$c
是shell变量:
awk -F: -v a=2 -v c=10 '$a=="load"{b=8}$1=="D0001"&&FNR==c{print $b}' MigStat
在
print$8
callexit之后效果更好
停止awk处理更多行。您需要阅读和理解,然后重试。我尝试了您的方法,但它仍然将整行作为输出,这意味着文件中的条件$a==“load”
永远不会为真。
awk -F: -v a="$a" -v c="$c" 'a=="load"&&$1=="D0001"&&NR==c{print $8;exit}' MigStat.stat