新旧文件的比较, 在于分析程序的修改范围
知晓范围, 能够更好判断哪些功能受到影响, 哪些功能保持不变
从而将重心倾斜到被影响的功能
diff
和 comm
均可以用于文件对比, 但功能上还是有明显差异
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 <
网友评论