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

Awk 匹配两列并将它们放在一个文件中,awk,Awk,我有两个文件。在每个文件中,我有两列。我需要将file1第二列的第一个值与file2第二列的每个值相匹配。如果它们相等,我需要将两列(file1和file2中的第一列)放在一个文件中,但它们应该彼此相邻。如果两个值不匹配,则不执行任何操作 文件1 文件2 示例输出: 344 766 465 937 729 980 777 837 862 936 如果您坚持要在awk中执行此操作 awk 'NR == FNR {arr[$2] = $1; next} {if ($2

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

文件1

文件2

示例输出:

344    766
465    937
729    980
777    837
862    936

如果您坚持要在
awk中执行此操作

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

当记录编号等于文件记录编号时(读取第一个文件时),将值存储在
值[$2]
的第1列中,并跳到下一条记录。在处理第二个文件时,如果
values[$2]
中有值,请打印
values[$2]
$1
中的值。我一定是个傻瓜,这是我第二次为你设置问题,你被哪个部分卡住了?如果您共享您的代码,我们可以帮助您修复它。@1_-CR:这种情况会发生-如果您在某个特定用户提出问题的标记中巡查,您可以多次重新格式化他们的问题。最令人恼火的是,当用户仍试图对问题进行自己的更改,却不断失去您的努力时。你必须尊重他们的所作所为,但是。。。嗯,这可能很烦人。最好等到他们停止编辑,然后将您的更改输入。我经常使用command-A选择所有材料并使用command-C复制我编辑的内容(Windows上的control-A、control-C、Linux上的control-C);然后将其粘贴回。也可以考虑使用:<代码> JON-J2-O'1.1 2.1文件(12)< /代码>。@ JonathanLeffler,谢谢您有用的见解。
344    766
465    937
729    980
777    837
862    936
awk 'NR == FNR {arr[$2] = $1; next} {if ($2 in arr){print(arr[$2], $1)}}' file1 file2
awk 'NR==FNR { values[$2] = $1; next; }
             { if ($2 in values) print values[$2], $1 }' file1 file2