【问题标题】:Printing lines from a file where a specific field does not start with something从文件中打印特定字段不以某些内容开头的行
【发布时间】:2010-09-13 13:42:14
【问题描述】:

我想打印第三个字段(由 : 分隔的字段)不以 # 开头的所有行(表示第三个字段是注释)。请注意:和#之间可能有空格。

示例输入:

A:B:#hdfghdfg

A:B: #dfdfdfg

A:B:C

期望的输出:

A:B:C

我试过了:

awk -F : '$3 ~ /^#/ { print }' run_out5 > run_out6

但它不起作用

谢谢,

贾格拉蒂

【问题讨论】:

    标签: linux unix scripting sed awk


    【解决方案1】:

    正则表达式可能更简洁:

    awk -F: '$3 !~ /^ ?#/ { print }'
    

    通常最好期待重复的空格(空格或制表符)而不是单个空格字符,后者在打印输出中看起来可能相同。

    awk -F: '$3 !~ /^[[:space:]]*#/ { print }'
    

    【讨论】:

      【解决方案2】:

      使用!~ 选择与正则表达式不匹配的行。
      调整正则表达式,使其匹配带有前导空格的字段。

      awk -F : '$3 !~ /^ *#/ {print}'
      

      【讨论】:

        猜你喜欢
        • 2020-11-10
        • 1970-01-01
        • 2011-04-11
        • 2020-10-30
        • 2016-07-17
        • 2012-07-20
        • 2018-05-03
        • 2017-04-13
        • 1970-01-01
        相关资源
        最近更新 更多