比较两个文件,只获得差异 - shell脚本

时间:2015-03-18 10:09:05

标签: linux grep diff

我有两个文件。第一个有很多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

有人能帮助我吗?

谢谢:)

2 个答案:

答案 0 :(得分:2)

grep可以使用选项-f

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

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

答案 1 :(得分:1)

如果文件已排序

comm是一个不错的工具。

comm -23 second.log total.log