用于从列中查找最小值的 awk 脚本

标签 awk

我是初学者AWK ,所以请帮助我学习它。我有一个名为 snd 的文本文件它的值(value)是

1 0 141
1 2 223
1 3 250
1 4 280

当第三列值为 minimu 时,我想打印整行

最佳答案

这应该这样做:

awk 'NR == 1 {line = $0; min = $3}
     NR > 1 && $3 < min {line = $0; min = $3}
     END{print line}' file.txt

编辑 :

它的作用是:
  • 记住第一行和它的第三个字段。
  • 对于其他行,如果第 3 个字段小于目前找到的 min,请记住该行及其第 3 个字段。
  • 在脚本的末尾,打印该行。

  • 注意测试NR > 1可以跳过,至于第一行,$3 < min会是假的。如果您知道第 3 列始终为正(非负),您也可以跳过 NR == 1 ...测试为 min脚本开头的值为零。

    编辑2 :

    这是更短的:
    awk 'NR == 1 || $3 < min {line = $0; min = $3}END{print line}' file.txt
    

    关于用于从列中查找最小值的 awk 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13099202/

    相关文章:

    regex - 如果模式在中间 linux 中,则在两个字符串之间进行 grep

    awk - 如何用awk填充以下字段的空格?

    awk 如何打印计数器的最后一个值?

    python - 重复列值及其对应的非重复列的解决方案

    python - 如何在 python 中使用 awk 对齐文本文件?

    regex - sed:保持模式并重新排列行

    linux - 查找某个目录下所有正在运行的脚本

    regex - awk 用下划线分隔单词

    regex - 删除具有特定模式的行

    awk - 如何以预定义的时间将音频文件拆分为多个章节