【发布时间】:2017-07-19 15:55:20
【问题描述】:
两个输入文件,每个文件有 3 个字段。两个文件中的前两个字段必须匹配,第三个字段必须进行比较。
File1
A ; 1 ; a1
B ; 2 ; b2
C ; 3 ; c3
A ; 4 ; a4
File 2
B ; 2 ; b2
C ; 3 ; c5
E ; 5 ; e5
我想要如下输出。
Mismatching:
C ; 3 ; c3
Lines missing in file1:
E ; 5 ; e5
Lines missing in file2:
A ; 1 ; a1
A ; 4 ; a4
我还想要 file1 和 file2 中缺少的记录。
我试过了
awk 'BEGIN {FS = ";"} NR==FNR{a[$1,$2] = $3; next} (a[$1,$2] != $3)' file1 file2
但这只会给我 file2 中的行,而 file1 中不存在..
【问题讨论】:
-
你很幸运,档案中充满了如何做到这一点的例子。只需搜索它们。
-
我试过 awk 'BEGIN {FS = ";"} NR==FNR{a $1,$2} = $3; next} (a[$1,$2] != $3)' file1 file2.. 但这只是给我 file2 中 file1 中不存在的行。
-
你为什么不在file1和file2交换的情况下再次调用脚本呢? (获取file1中不存在于file2中的行)