我需要使用文件 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