回答
您可能需要更多地解释您的需求。然而,最有可能的是,你可以用diff命令来做你想做的事情(只需要sort和/或grep的帮助)。
让我们假设你有两个文件:a.properties和b.properties
如果你只是想知道,如果这些文件以任何方式不同,可以使用
diff a.properties b.properties
你如果它们是相同的或不同的列表,则不会输出。
如果您想在更多语义层面上进行比较,即两组属性是否相同,则需要多做一些。这些文件可以在文本上有所不同,但对于使用它们的Java程序来说意味着相同的东西。例如,属性可以按不同的顺序发生。可以有空行,其他空格和注释。
如果是这样的话,您是否在意这些评论是否相同?它们不会影响程序的运行,但它们有意义(并且对阅读文件的人有价值)。如果你不在乎,就把它们去掉。
你可能不在乎空行,因为它们没有意义。
您还需要处理下面的情况:文本上
a.properties:
prop = value
b.properties:
prop=value
同样,不同的(注意等号两旁的空间),但在Java中的含义相同。
从简单开始,我们假设属性以相同的顺序出现。
忽略空白行:
diff -B a.properties b.properties
拉手随机白空间(例如。围绕等号)
diff -w a.properties b.properties
结合所有的这样的:
diff -w -B a.properties b.properties
地带出注释:
grep -v '^#.*$' a.properties > a.tmp
grep -v '^#.*$' b.properties > b.tmp
diff -w -B a.tmp b.tmp
rm a.tmp b.tmp
允许以不同的顺序的属性,带注释:
grep -v '^#.*$' a.properties | sort > a.tmp
grep -v '^#.*$' b.properties | sort > b.tmp
diff -w -B a.tmp b.tmp
rm a.tmp b.tmp
尝试使用diff程序,叫“差异/路径/到/第一/文件/路径/要/秒/文件”和猫一个grep他们。对于diff的特殊用法(如果您需要任何特别的),请尝试搜索man diff。
你应该看看使用diff或sdiff。我会建议事先对文件进行排序,并删除任何空行以减少噪音;例如
file1=/var/tmp/foo.txt
file2=/var/tmp/bar.txt
sort ${file1} | grep -v '^$' > ${file1}.tmp
sort ${file2} | grep -v '^$' > ${file2}.tmp
sdiff ${file1} ${file2}
取决于你想要什么。是不同的评论是不同的?空白?订购?我认为最简单的将是一个小groovy脚本。这是一个选项吗?如果不是,请确保在使用之前去除注释abd空格并对输出进行排序diff
编辑:虽然可以让diff忽略空白,但我不确定这是否是您想要的,因为空白可能是属性值
对于语义比较,下注使用PropDiff。
Usage: [flags] properties-file1 properties-file2 [-f filenameOrPathPrefixForResults]
flags:
-c property settings that are common to both p1 and p2, where p2 take precedence
-u union p1 and p2 where p2 has higher precedence
-1 properties settings that are only in p1
-2 properties settings that are only in p2
-d intersection of properties in p1 and p2 that have different values
-e intersection of properties in p1 and p2 that have equal values
见另一个PHP代码,以差异性文件超过here
php list_missing_properties.php "file1.properties" "file2.properties"
comm
是一个有用的工具。它可以告诉你什么在file1中,而不是在file2中,file2中是什么,而不是在file1中,以及两个文件之间有什么共同之处。它要求首先对两个文件进行排序。
我upvoted @antispams PropDiff答案,因为它似乎正是你要求的。
- 1. 使用shell脚本比较两个文件夹中的文件
- 2. 比较2个文件shell脚本
- 3. 比较使用shell脚本
- 4. shell脚本比较两个变量
- 5. 合并两个属性文件中使用shell脚本
- 6. 在shell脚本中比较两个文件
- 7. 在shell脚本中,如何比较两个csv文件?
- 8. Shell脚本 - 比较
- 9. shell脚本比较
- 10. 比较shell脚本和增量文件
- 11. 比较两个文件使用Java
- 12. 比较两个文件没有使用shell脚本排序它们
- 13. shell脚本比较两个文件并将差异写入第三个文件
- 14. greenDAO:比较两个属性
- 15. DataAnnotation比较两个属性
- 16. 比较和使用grep shell脚本
- 17. 使用bash脚本比较两个文件
- 18. 使用Perl脚本来比较两个文件
- 19. 比较具有shell脚本
- 20. Shell脚本比较日期
- 21. 用于比较两个文件之间差异的shell脚本问题。 [Linux]
- 22. 不能源shell脚本属性文件
- 23. 将两个列表与一个shell脚本进行比较
- 24. Shell脚本将结果与文本文件进行比较?
- 25. 需要perl/shell脚本比较2个文件
- 26. 在shell脚本中比较2个文件
- 27. 将两个文件中的两个文件比较为一个脚本
- 28. 用于比较两个文件的Perl脚本
- 29. 比较在bash shell脚本,两个字符串变量
- 30. 如何比较在shell脚本两个浮点值
@Adamski - 属性文件中的评论怎么样? – 2009-10-28 10:58:57
这将显示评论之间的差异以及 – pvgoddijn 2009-10-28 15:43:07
@StephenC - grep -vE“^ $ | ^#”将为您工作 – smilyface 2018-02-20 09:02:56