Linux 要在awk命令中使用内部变量(如果在外部) awk

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未在块中设置$

现在我想打印列$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
      call
      exit之后效果更好
      停止awk处理更多行。

      您需要阅读和理解,然后重试。我尝试了您的方法,但它仍然将整行作为输出,这意味着文件中的条件
      $a==“load”
      永远不会为真。
      awk -F: -v a="$a" -v c="$c" 'a=="load"&&$1=="D0001"&&NR==c{print $8;exit}' MigStat.stat