多文件中的Awk比较

多文件中的Awk比较,awk,Awk,我有两个文件: file1: 1,apple 2,mango 3,banana 44,orange file2: 1,apple 22, 31,xyz 2,man 3,banana 44,oran 44,orange 我需要找到使用第1列和检查第2列的文件的差异。我不想使用$0来打印第一个文件中不在文件2中的行 结果输出应打印在文件3中,如下所示: 2,mango,man 44,orange,oran 芒果来自file1(第2列

我有两个文件:

file1

1,apple  
2,mango  
3,banana  
44,orange  
file2

1,apple  
22,  
31,xyz  
2,man  
3,banana  
44,oran   
44,orange
我需要找到使用第1列和检查第2列的文件的差异。我不想使用
$0
来打印第一个文件中不在
文件2中的行

结果输出应打印在
文件3
中,如下所示:

2,mango,man  
44,orange,oran        

芒果来自
file1
(第2列),男人来自
file2
(第2列)

下面的
awk
可能对你有同样的帮助

awk -F, 'FNR==NR{a[$1]=$0;b[$2];next} ($1 in a) && !($2 in b){print a[$1],$2}' OFS=,   Input_file1  Input_file2

如果要将输出放入名为file3的文件中,请在上述命令的最后添加
>file3

稍有不同的awk:

$ awk 'BEGIN{FS=OFS=","}($1 in a) && a[$1]!=$2{print $1,a[$1],$2}{a[$1]=$2}' file1 file2
2,mango,man  
44,orange,oran  
解释:

awk 'BEGIN {
    FS=OFS=","            # set separators
}
($1 in a) && a[$1]!=$2 {  # if the id is in a and $2s differ   (may occur only after file1 
    print $1,a[$1],$2     # output                              is already hashed into a)
}
{
    a[$1]=$2              # hash to a
}' file1 file2

感谢它按预期工作,是否可以向我提供此脚本的详细信息,嗨,詹姆斯,我面临一个问题,如果文件2有两行,如44,oran 44,orange,那么我得到的结果如下:-44,oran 44,oran,orange。这不是我的预期结果。如果我们可以将这些结果导出并写入其他文件,可能吗?请将一个文件具有2个相同ID时的预期结果更新到原始示例。更新的文件2请运行ur cmd,您可以看到描述。当使用重复ID索引数据时,问题非常明显。问题是在这种情况下,您的预期输出是什么?如果文件1中存在重复项,预期的输出是什么?文件2怎么样?如果两个文件都有重复的呢?打印第一个条目?打印第二个条目?