dav*_*ave 17
您可能需要更多地解释您的要求.但是,您最有可能使用diff命令执行所需操作(在sort和/或grep的帮助下).
假设您有两个文件:a.properties和b.properties
如果您只是想知道文件是否有任何不同,您可以使用
diff a.properties b.properties
Run Code Online (Sandbox Code Playgroud)
如果它们相同或存在差异列表,您将无法获得输出.
如果你想在更语义的层面上进行比较,也就是说,两组属性是相同的,那么你需要做更多的事情.文件可能在文本上有所不同,但对使用它们的Java程序来说意味着相同的事情.例如,属性可以以不同的顺序发生.可以有空行,其他空格和注释.
如果是这种情况,您是否关心评论是否相同?它们不会影响程序的运行,但它们具有意义(对于读取文件的人有意义).如果您不在乎,请将它们剥离.
你可能不关心空行,因为它们没有意义.
您还需要处理以下情况:
a.properties:
prop = value
b.properties:
prop=value
Run Code Online (Sandbox Code Playgroud)
同样,文本上不同(注意等于的空格)但在Java中具有相同的含义.
从简单开始,我们假设属性以相同的顺序出现.
忽略空行:
diff -B a.properties b.properties
Run Code Online (Sandbox Code Playgroud)
处理随机空白区域(例如,等号周围)
diff -w a.properties b.properties
Run Code Online (Sandbox Code Playgroud)
结合所有这些:
diff -w -B a.properties b.properties
Run Code Online (Sandbox Code Playgroud)
删除评论:
grep -v '^#.*$' a.properties > a.tmp
grep -v '^#.*$' b.properties > b.tmp
diff -w -B a.tmp b.tmp
rm a.tmp b.tmp
Run Code Online (Sandbox Code Playgroud)
允许以不同顺序的属性,剥离注释:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6101 次 |
| 最近记录: |