比较两个文件并仅获取差异 - shell 脚本

Compare two files and get only the differences - shell script

我有两个文件。第一个有很多 ID,第二个也有一些 ID。我想知道第一个文件中不存在第二个文件的哪个ID。

我用过这个命令:

diff -u total.log second.log | grep -E "^\+"

但我不确定这是否是最好的方法。

Total.log

1087
1119
1121
1944
1951
1966
2148
2162
2169
2188
2216
2322
2393
2533
2748
2763
2766
2772
2779
2783
2787
2789
2793
2795
2798
2801
2842
2858
2868
2871
2873
2875
2887
2892
2897
2900
2901
2912
2918
2951
2957
2974
2975
2991
2993
3006
3007
3050
3066
3089
3102
3106
3119
3122
3124
3125
3151
3153
3164
3165
3171
3173
3174
3175
3229
3234
3244
3253
3265
3283
3302
3304
3305

Second.log

1116
1119
1121
1700
1928
1942
1947
1961
1968
1969
2170
2171
2752
2776
2801
2807
2808
2818
2829
2853
2884
2889
2897
2899
2901
2902
2913
2936
2970
2973
2974
3045
3167
3183
3185
3186
3235
3244
3247
3303
3306

有人可以帮我吗?

谢谢 :)

grep 可以使用选项 -f:

从文件中读取模式
grep -vFf total.log second.log

-F 告诉 grep 模式不是正则表达式模式 - 它们是 固定长度 模式。 -v 否定匹配。

如果文件已排序

comm 是一个很好的工具。

comm -23 second.log total.log