【问题标题】:Delete lines containing a range pattern in 4th column删除第 4 列中包含范围模式的行
【发布时间】:2011-02-27 12:32:39
【问题描述】:

在文件的第 4 列中包含一个浮点数

dsfsd sdfsd sdfds 4.5 dfsdfsd

如果数字介于 -0.1 和 0.1(或其他范围)之间,我想删除整行。

sed 或 awk 可以为我做这些吗?

谢谢

【问题讨论】:

    标签: bash scripting sed awk


    【解决方案1】:

    我推荐使用“模式{表达式}”语法:

    awk '($4 < -0.1) || ($4 > 0.1) {print}' test.txt
    

    或者,更简洁:

    awk '($4 < -0.1) || ($4 > 0.1)' test.txt
    

    因为 {print} 是默认操作。我假设您有一个包含您的数据的文件“test.txt”。

    【讨论】:

    • 这种场景——基于条件的逐行过滤——真的是 awk 的生计。这是 Kernighan 等人在开发语言时想到的用例类型。 “模式 {表达式}” 语法意味着如果该行满足“模式”,则对给定行执行“{表达式}”。
    【解决方案2】:

    awk:

    { if ($4 > 0.1 || $4 < -0.1) print $0 }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多