![GUI 软件用于比较两个文件,获得“干净”的差异导出吗?](https://linux22.com/image/1299782/GUI%20%E8%BD%AF%E4%BB%B6%E7%94%A8%E4%BA%8E%E6%AF%94%E8%BE%83%E4%B8%A4%E4%B8%AA%E6%96%87%E4%BB%B6%EF%BC%8C%E8%8E%B7%E5%BE%97%E2%80%9C%E5%B9%B2%E5%87%80%E2%80%9D%E7%9A%84%E5%B7%AE%E5%BC%82%E5%AF%BC%E5%87%BA%E5%90%97%EF%BC%9F.png)
有没有办法“干净地”导出文件之间的差异?不是差异,也不是格式化的报告……只是干净的 .CSV/.XLS/等导出。
这是为非技术人员准备的;我们公司里有很多非技术人员确实需要这样的东西。他们使用邮件列表,需要一种方法来提取列表修订之间的更改。
作为一名程序员,我知道市面上有大量的 diff 工具:WinDiff、BeyondCompare、FileMerge、命令行 diff 等。但我找不到一个可以干净地导出差异的工具。(我可能只是错过了我列出的某个知名 diff 工具中的某些内容)
例子...
文件A.csv
1000, Aaron
1001, Bob
1002, Chris
1004, Erin
文件B.csv
1000, Aaron
1001, Bob
1002, Chris
1003, Dolores
1004, Edward
我们只想将更改的行导出到...“ChangesInFileB.csv”
1003, Dolores
1004, Edward
值得一提的是,Beyond Compare 的支持人员表示他们不提供该服务。
http://www.scootersoftware.com/vbulletin/showthread.php?p=32298#post32298
这个问题表面上类似,但没有解决“清洁出口”的问题 https://superuser.com/questions/294142/can-somebody-recommend-a-program-to-compare-differences-in-two-text-files-and-re
答案1
您只需使用标准diff
工具和一些脚本即可。
对于这两个示例文件,plaindiff
将输出:
4c4,6
< 1004, Erin
---
> 1003, Dolores
> 1004, Edward
表示<
“删除行”,表示>
“添加行”。只需过滤即可>
获取第二个文件中存在但不在第一个文件中的所有行:
$ diff a.csv b.csv |grep '>'|cut -c 3-
1003, Dolores
1004, Edward
(该cut
部分过滤掉了前导>
)。您可以将其放入脚本中。
注意:以上假设您已安装diff
、grep
和cut
。它们是 Linux 和 Mac OS X 的标准配置(我相信);对于 Windows,您需要 Cygwin 或类似软件。