【问题标题】:awk to filter lines in a file based on match and conditional of another fileawk 根据另一个文件的匹配和条件过滤文件中的行
【发布时间】:2023-01-20 00:47:57
【问题描述】:

我有一个这种格式的文件:

文件1

id1   12.4
id2   21.6
id4   17.3
id6   95.5
id7   328.6

我想根据另一个格式的文件过滤它:

文件2

id1   11.5
id2   10.4
id3   58.4
id4   24.6
id5   234.4
id6   2.5
id7   330.6

首先,我想匹配文件之间的 ID。然后,我想保留 file1 中分数(第二列)大于 file2 中分数的行。它会输出这个:

id1   12.4
id2   21.6
id6   95.5

我开始编写类似 awk 'FNR==NR { a[$1][$2][$0]; next } $1 in a {}' file1 file2 的代码,我认为它会匹配文件之间的 ID,但我不知道如何完成代码以按分数过滤。

【问题讨论】:

    标签: awk


    【解决方案1】:

    您可以编写 awk 命令,首先读取 file2,然后跟踪这些值。

    然后你可以和file1做比较

    awk 'FNR==NR { a[$1] = 0+$2; next } $1 in a && 0+$2 > a[$1]' file2 file1
    

    输出

    id1   12.4
    id2   21.6
    id6   95.5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多