【问题标题】:How can I compare rows in Unix text files and add them together in another text file?如何比较 Unix 文本文件中的行并将它们添加到另一个文本文件中?
【发布时间】:2019-05-21 23:32:07
【问题描述】:

我有一个包含 3 列的文本文件 1。第一列包含一个数字,第二列是一个单词(可以是像狗一样的刺,也可以是像 1050 这样的数字),第三列是大写字母的 TAG。 我有另一个文本文件 2,它有 2 列。第一列有一个数字,第二列有一个大写字母的 TAG。 我想将文本文件 1 中的每一行与文本文件 2 中的每一行进行比较。如果文本文件 1 中的列 [3] 中的 TAG 与文本文件 2 中的列 [2] 中的 TAG 相同,那么我想要将文本文件 1 中的数字存储在文本文件 2 中的数字旁边文本文件 1 中的单词旁边。文本文件 2 中没有重复的 TAGS,文本文件 1 中没有重复的单词。 插图:

文本文件 1

2    2737    HPL
32   hello   PLS
3    world   PLS
323  .       OPS

文本文件 2

342  HPL
56   PLS
342  DCC
4    OPS

我想要:

2   342  2737
32  56   hello
3   56   world
323 4  .

【问题讨论】:

    标签: shell unix compare


    【解决方案1】:

    您可以在awk 中这样做:

    awk 'FNR==NR { h[$2] = $1; next } $3 in h { print $1, h[$3], $2 }' file2 file1
    

    第一部分将文件 2 中的键和列保存在关联数组 (h) 中,第二部分将文件 1 中的第 3 列与该数组进行比较并打印相关部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2011-07-24
      • 2014-05-31
      相关资源
      最近更新 更多