-1

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

文件 1

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

文件2

766  0
937  1
980  2
837  3
936  5

示例输出:

344    766
465    937
729    980
777    837
862    936
4

2 回答 2

2

如果你坚持这样做awk

awk 'NR == FNR {arr[$2] = $1; next} {if ($2 in arr){print(arr[$2], $1)}}' file1 file2
于 2013-07-06T04:10:53.970 回答
2
awk 'NR==FNR { values[$2] = $1; next; }
             { if ($2 in values) print values[$2], $1 }' file1 file2

当记录号等于文件记录号时(在读取第一个文件时),将值存储在 中的第 1 列中values[$2],跳到下一条记录。在处理第二个文件时,如果 中有值values[$2],则打印出values[$2]和中的值$1

于 2013-07-06T04:11:05.160 回答