我有 2 个文件,其中包含超过 1000 万行,我想以有效的方式比较这 2 个文件,在我的情况下,我尝试使用 awk 获得以下答案,我是坚持获取修改内容部分
Sample FIle (a1.txt)
A,1
B,2
C,3
D,4
Sample FIle (b1.txt)
B,2
C,55 <- Mod data
D,4
E,5 <- new data
F,6 <- new data
Z,11 <- new data
* **A,1 删除和修改仅适用于第 2 列
这是我的代码和预期输出
新添加的内容 - 工作正常
awk -F',' 'NR==FNR{++a[$1];next} {line++;if(!(a[$1])){print $0}}' a1.txt b1.txt
E,5
F,6
Z,11
已删除内容 - 工作正常
awk -F',' 'NR==FNR{++a[$1];next} {line++;if(!(a[$1])){print $0}}' b1.txt a1.txt
A,1
修改内容
awk -F',' 'NR==FNR{++a[$2];next} {line++;if(!(a[$2])){print $0}}' a1.txt b1.txt
电流输出(非必需)
C,55
E,5
F,6
Z,11
但需要输出
C,55
这将返回机器人新添加的内容+修改的内容
请帮我解决这个问题
最佳答案
awk -F',' 'NR==FNR{a[$1]=$2;next} {line++;if(a[$1] != $2 && a[$1]){print $0}}' v1 v2
C,55
cat v1
A,1
B,2
C,3
D,4
cat v2
B,2
C,55
D,4
E,5
F,6
Z,11
关于bash - 使用 awk 提取文件的修改内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655696/