【问题标题】:awk returns lines with substringawk 返回带有子字符串的行
【发布时间】:2014-05-05 10:57:31
【问题描述】:

我有一个文本文件:

string 323
blah 23
string_substring 33

当我的 bash 变量 $f = 'string' 时,我想使用 awk 仅返回第一行中的数字

awk -F" " -v x=$f '$1 ~ x {print $2}' file.txt

即使我使用 " " 的字段分隔符,它也会返回第一行和第三行......我怎样才能让它只匹配第一行?有没有办法说 $1 = x,即第一个参数正好是 x,仅此而已?

【问题讨论】:

    标签: awk


    【解决方案1】:

    如果字符串是第一列,则使用它作为条件:

    awk '$1=="string" {print $2}' file
    

    或者从一个shell变量,

    var="string"
    awk -v f=$var '$1==f {print $2}' file
    

    【讨论】:

      【解决方案2】:

      当你说:

      $1 ~ x
      

      您指定第一个字段匹配 x。如果您希望它是平等的,请这样说:

      $1 == x
      

      这样说:

      awk -F" " -v x=$f '$1 == x {print $2}' file.txt
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-03
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 2011-06-10
        • 2016-08-27
        相关资源
        最近更新 更多