如何匹配两个不同文件中的字段并附加到输出文件中?

如何匹配两个不同文件中的字段并附加到输出文件中?

我需要使用文件 1 的 $1 和文件 2 的 $2 来匹配两个不相等的文件,并在文件 1 上打印文件 2 的 $1。

输入文件1

101 2
101 5
101 7
103 2
103 3
103 4
105 3
105 2

输入文件2

24 101
23 103
26 105

所需输出

101 2 24
101 5 24
101 7 24
103 2 23
103 3 23
103 4 23
105 3 26
105 2 26

我尝试过以下代码,但它给了我不正确的输出。

awk 'FNR==NR{a[$2]=$0;next};{print a[$2]}' file2 file1

答案1

经典工作join

join -1 1 -2 2 file1 file2
  • -1 1指定第一个文件中的字段。
  • -2 2指定第二个文件中的字段。

答案2

从您的代码开始,我还发布了一个awk解决方案,因为您几乎就在那里:

awk 'FNR==NR { a[$2]=$1; next; } { print $0,a[$1] } ' file2 file1

输出:

101 2 24
101 5 24
101 7 24
103 2 23
103 3 23
103 4 23
105 3 26
105 2 26

相关内容