通过比较行来合并两个文本,如果某些列相似,则选择一个文本的行

通过比较行来合并两个文本,如果某些列相似,则选择一个文本的行

我有两个不同的文件,其中两个数据的某些行测量相同的东西。我想要一个合并的输出,这样 File1 的行将成为输出行,其中行测量相同的东西(file1 的第二行和 file2 的第一行测量相同的东西。我希望当 column1 和 column2 时文件 1 的第一行文件的相似性。)

... 文件1:

1257, OBM  , 47, 106, 1330
1257, IRK  , 52, 104,  467

....

文件2:

1257, IRK  , 50, 100,  400
1000, CTK  , 47, 106, 1330

....

输出:

1257, OBM  , 47, 106, 1330
1257, IRK  , 52, 104,  467
1000, CTK  , 47, 106, 1330

....

答案1

使用awk

awk -F',' '!seen[$1,$2]++' file1 file2

解释:

  • 一开始,键为 fields 的数组项$1,$2未分配,因此为 false。
  • 如果为 false,!seen则为 true,因此我们将其递增(使其为 true)并执行默认操作,即print
  • 如果为 true(我们第二次看到相同的字段)!seen则为 false,awk并将跳过该行。

相关内容