【问题标题】:Print Lines That Are Greater Than Two Fields打印大于两个字段的行
【发布时间】:2016-10-04 17:29:44
【问题描述】:

grep 没问题,但我知道awk 在这种情况下可能更有效。我正在学习,但还没有完成。

我有一些数据:

record1,14.2,10,50
record2,10.7,5,-
record3,9.3,6.8,10
record4,8,2.7,10
record5,5.5,22.4,10
record6,3,23.6,55
record7,2.7,14.6,-

我只想打印字段 3 中大于 7 和字段 4 中大于 10(同时删除任何破折号)的行。因此,输出将是这样的:

record1,14.2,10,50
record6,3,23.6,55

我使用awk '{print $3 > 7}' 玩过,但是,就像我说的,我对awk 和条件不是很好。我可以用 grep 做到这一点,但我觉得那效率低下。非常感谢任何帮助。

【问题讨论】:

    标签: linux bash unix awk grep


    【解决方案1】:

    awk 脚本的结构是condition { action }。默认操作是{ print },它会打印整条记录。

    • 您的条件是$3 > 7$4 > 10
    • 您的字段分隔符是逗号。

    结合我们得到的那些东西:

    awk -F, '$3 > 7 && $4 > 10' file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多