匹配两列并将它们放在一个文件中

时间:2013-07-06 04:00:15

标签: awk

我有两个文件。在每个文件中,我有两列。我需要将file1的第二列的第一个值与file2的第二列中的每个值相匹配。如果它们相等,我需要将两列(file1和file2中的第一列)放在一个文件中,但它们应该彼此相邻。如果两个值不匹配,则不执行任何操作。

文件1

344  0
465  1
729  2
777  3
676  4
862  5

file2的

766  0
937  1
980  2
837  3
936  5

示例输出:

344    766
465    937
729    980
777    837
862    936

2 个答案:

答案 0 :(得分:2)

如果您坚持在awk

中完成此操作
awk 'NR == FNR {arr[$2] = $1; next} {if ($2 in arr){print(arr[$2], $1)}}' file1 file2

答案 1 :(得分:2)

awk 'NR==FNR { values[$2] = $1; next; }
             { if ($2 in values) print values[$2], $1 }' file1 file2

虽然记录号等于文件记录号(在读取第一个文件时),但在values[$2]的第1列中隐藏值,跳到下一条记录。处理第二个文件时,如果values[$2]中有值,请在values[$2]$1中打印出值。