回答
您可能需要更多地解釋您的需求。然而,最有可能的是,你可以用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