如何比较Unix文本文件中的行并将它们添加到另一个文本文件中?

时间:2019-05-21 15:06:01

标签: shell unix compare

我有一个包含3列的文本文件1。第一列包含一个数字,第二列包含一个单词(可以是像狗一样的st,也可以是像1050这样的数字),第三列是一个包含大写字母的TAG。 我有另一个具有2列的文本文件2。第一列带有数字,第二列带有大写字母的TAG。 我想将文本文件1中的每一行与文本文件2中的每一行进行比较。如果文本文件1中列[3]中的TAG与文本文件2中列[2]中的TAG相同,则我想要将数字存储在文本文件1中,紧随文本文件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  .

1 个答案:

答案 0 :(得分:0)

您可以在awk中这样操作:

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

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