假设我有两个文件 -
文件1:
1|abc
2|cde
3|pkr
文件2:
1|abc
2|cde
4|lkg
如何使用 列出两个文件中的真正差异awk
?如果第二个文件是第一个文件的子集,我可以执行以下操作 -
awk -F"|" 'NR==FNR{a[$1]=$2;next} !($1 in a)' file{1,2}
但这会给我
4|lkg
我想得到如下输出,因为这是真正的区别。差异应该被视为:
3|pkr
4|lkg
差异标准:
- 字段 1 存在于文件 1 中,但不存在于文件 2 中。
- 字段 1 存在于文件 2 中,但不存在于文件 1 中。
- 字段 1 存在于两个文件中,但具有不同的值。
一些背景:
文件 1 和文件 2 是从不同数据库导出的表。它有两个由管道分隔符分隔的字段。字段 1始终是唯一的。字段 2 可能相同。
我的意图是awk
在它上面运行一个班轮以找到真正的差异。如果我两次运行上述命令(第一次运行时首先传递文件 1,第二次运行时首先传递文件 2),我会得到两个都缺少的记录。但是,我想一次性完成。