我的目标是提取File1
中不存在的File2
我们说File1
:
String A
String B
String C
我们说File2
:
String B
String C
行已排序,输出应为:
String A
所以我为它写了这个命令:
diff File1 File2 | grep '^<' | sed 's/< //g'
对我的样本文件工作正常,有10 - 20行。
我也试过这个命令:
grep -Fxv -f File2 File1
这也适用于我的示例文件。
但问题是:
它似乎不适用于我的实际数据集,即每个约100万行的两个文件。
发生了什么事?我忽略了什么?该怎么办?
答案 0 :(得分:6)
这是comm
工具的用途:
$ comm -23 file1 file2
String A
答案 1 :(得分:1)
试试这个:
awk 'NR==FNR{a[$0];next}!($0 in a)' file2 file1
如果这适用于您的实际文件?
答案 2 :(得分:0)
听起来你可能有空白问题。
你试过了吗?
diff -uBb File1 File2
从手册页:
-b --ignore-space-change
Ignore changes in the amount of white space.
-B --ignore-blank-lines
Ignore changes whose lines are all blank.
答案 3 :(得分:0)
您的两个文件是否已排序?如果数据乱序,diff无法工作...
检查:
diff -uBb <(sort File1) <(sort File2)
注意:重新加入答案。