<分区>
如何使用 shell 脚本比较两个不同文件夹中的两个属性文件 输入可以是两个文件夹的路径吗?
两个文件夹中都有多个文件,每个文件都需要检查
<分区>
如何使用 shell 脚本比较两个不同文件夹中的两个属性文件 输入可以是两个文件夹的路径吗?
两个文件夹中都有多个文件,每个文件都需要检查
最佳答案
您可能需要多解释一下您的要求。然而,您很可能可以使用 diff 命令做您想做的事(在 sort 和/或 grep 的帮助下)。
假设您有两个文件:a.properties 和 b.properties
如果你只是想知道文件是否有任何不同,你可以使用
diff a.properties b.properties
如果它们相同或差异列表,您将不会得到任何输出。
如果您想在更语义化的层面上进行比较,即两组属性是否相同,那么您需要做更多的工作。这些文件在文本上可能有所不同,但对于使用它们的 Java 程序来说意义相同。例如,属性可以以不同的顺序出现。可以有空行、其他空格和注释。
如果是这样的话,你会在乎评论是否相同吗?它们不会影响程序的运行,但它们具有一定的意义(对那些阅读文件的人来说是有值(value)的)。如果您不在乎,请将它们剥离。
您可能不关心空行,因为它们没有任何意义。
您还需要处理以下情况:
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
关于java - 使用 shell 脚本比较两个 java 属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1636453/