【发布时间】:2021-05-04 13:53:40
【问题描述】:
所以我有如下所示的第一个文件:
first.txt:
id|name|place|cost|member|
1|max|USA|55|yes|
2|Jhon|France|99|No|
3|Mary|Canada|777|yes|
4|Berry|USA|888|yes|
5|Stella|Mexico|100|yes|
还有文件 second.txt:
id|name|place|cost|member|
1|max|USA|55|No|
2|Jhon|France|99|No|
3|Mary|Canada|770|yes|
4|Berry|USA|888|yes|
5|Stella|Mexico|101|No|
所以在这里我想根据应该相同的前三个列比较这两个文件,如果它们存在于第 4 列和第 5 列中,则打印差异
在这个例子中,我想要的输出是:
对于 id: 1 和 name: max 和 country: USA 成员从 Yes 更改为 No
对于 id:3 和 name:Mary 和国家:Canada,费用从 777 更改为 770
对于 id:5 和 name:Stella 和国家:Mexico,费用从 100 更改为 101,会员从 Yes 更改为 No
知道我的文件可能包含数千行并且大小不同。
我尝试了 awk 命令,但无法将差异和相似性结合起来,而且输出缺少行,而且打印不知道放在哪里:
awk -F'|' 'NR++FNR{C[$1,$2,$3]++;C[$4,$5]++; next} C[$1,$2,$3] > 0 && C[$4,$5] == 0'
【问题讨论】:
-
不做更深入的检查,
NR++FNR应该是NR==FNR