diff, 找不同

2021-11-01  本文已影响0人  halfempty

新旧文件的比较, 在于分析程序的修改范围
知晓范围, 能够更好判断哪些功能受到影响, 哪些功能保持不变
从而将重心倾斜到被影响的功能

diffcomm均可以用于文件对比, 但功能上还是有明显差异

1 实例

1.1 构造测试数据

# cat old/file.txt 
FB:7C:01:C1:3C:D7
21:AE:C7:51:04:53
2A:6D:DC:94:07:11
41:A4:CC:84:A8:A7
02:1A:DC:5C:E7:87
CB:6A:41:2B:C8:F6
F7:76:7F:F7:27:5B
FC:8D:19:34:BB:46
F7:83:66:98:52:62
A2:2D:60:EF:A2:3E
# cat new/file.txt 
FB:7C:01:C1:3C:D7
21:AF:C7:51:04:53
2A:6D:DC:94:07:11
41:A4:CC:84:A8:A7
02:1A:DC:5C:E7:87
CB:6A:42:2B:C8:F6
F7:76:7F:F7:27:5B
FC:8D:19:34:BB:46
A2:2D:60:EF:A2:3E

1.2 comm对比

我们会发现A2:2D:60:EF:A2:3E结果不准确, 因为2个文件中均出现过

comm的官方应用场景是: compare two sorted files line by line, 对于未排序的文件, 比对结果可能与预期不符

comm --nocheck-order  -3 old/file.txt new/file.txt 
21:AE:C7:51:04:53
    21:AF:C7:51:04:53
CB:6A:41:2B:C8:F6
    CB:6A:42:2B:C8:F6
    A2:2D:60:EF:A2:3E
    
F7:83:66:98:52:62
A2:2D:60:EF:A2:3E

1.3 diff对比

diff结果符合预期, 但是初次使用, 可能不适应diff结果的输出格式, 不够直观

diff old/file.txt new/file.txt 
2c2
< 21:AE:C7:51:04:53
---
> 21:AF:C7:51:04:53
6c6
< CB:6A:41:2B:C8:F6
---
> CB:6A:42:2B:C8:F6
9d8
< F7:83:66:98:52:62

类似于beyondcompare的展现方式, -y参数

diff -y old/file.txt new/file.txt 
FB:7C:01:C1:3C:D7                                                  FB:7C:01:C1:3C:D7
21:AE:C7:51:04:53                                               |  21:AF:C7:51:04:53
2A:6D:DC:94:07:11                                                  2A:6D:DC:94:07:11
41:A4:CC:84:A8:A7                                                  41:A4:CC:84:A8:A7
02:1A:DC:5C:E7:87                                                  02:1A:DC:5C:E7:87
CB:6A:41:2B:C8:F6                                               |  CB:6A:42:2B:C8:F6
F7:76:7F:F7:27:5B                                                  F7:76:7F:F7:27:5B
FC:8D:19:34:BB:46                                                  FC:8D:19:34:BB:46
F7:83:66:98:52:62                                               <
A2:2D:60:EF:A2:3E                                                  A2:2D:60:EF:A2:3E

如果只想查看不同的行, 过滤相同的行, 使用--suppress-common-lines参数

diff -ty --suppress-common-lines old/file.txt new/file.txt 
21:AE:C7:51:04:53                                               |  21:AF:C7:51:04:53
CB:6A:41:2B:C8:F6                                               |  CB:6A:42:2B:C8:F6
F7:83:66:98:52:62                                               <

上一篇 下一篇

猜你喜欢

热点阅读