我有兩個文件(可能長達150,000行,每行160字節),我想檢查是否行每個都是一樣的。 diff
不適用於我(直接),因爲在這兩個文件中,一小部分線條以不同的順序出現。通常,一對線將被換位。
查看兩個文件中是否出現相同的行,但順序無關緊要的最佳方法是什麼? 謝謝, 克里斯比較兩個文件的順序無關緊要的相同行
2
A
回答
3
雖然這是一個稍貴的方式來做到這一點(對於更大的東西我會重新考慮這一點),我就火了Python和執行以下操作:
filename1 = "WHATEBVER YOUR FILENAME IS"
filename2 = "WHATEVER THE OTHER ONE IS"
file1contents = set(open(filename1).readlines())
file2contents = set(open(filename2).readlines())
if file1contents == file2contents:
print "Yup they're the same!"
else:
print "Nope, they differ. In file2, not file1:\n\n"
for diffLine in file2contents - file1contents:
print "\t", diffLine
print "\n\nIn file1, not file2:\n\n"
for diffLine in file1contents - file2contents:
print "\t", diffLine
這會打印出不同的線路,如果他們不同。
1
只有150k行,只是散列每行,並將它們存儲在查找表中排序。然後,對於文件2中的每一行,只需執行查找。
0
另一個python腳本來做到這一點:
#!/usr/bin/env python
import sys
file1 = sys.argv[1]
file2 = sys.argv[2]
lines1 = open(file1,'r').readlines()
lines2 = open(file2,'r').readlines()
lines1.sort()
lines2.sort()
s = ''
for i,line in enumerate(lines1):
if lines2[i] != line:
print '> %s' % line
print '< %s' % lines2[i]
s = 'not'
print 'file %s is %s like file %s' % (file1, s, file2)
相關問題
- 1. 比較兩個CSV文件時行順序無關的Python
- 2. AWK - 比較兩個文件 - 如果Field1相同,比較行
- 3. 比較兩個文件忽略順序
- 4. Puppet DSL:順序無關緊要?
- 5. 比較兩個文件並獲得相同行的輸出
- 6. 比較CMD中非相同文件的兩個文件夾
- 7. 比較兩個文件夾的非相同文件?
- 8. 比較兩個文件夾與SymmetricDifference非相同的文件?
- 9. 獲取兩個變量及其順序無關緊要的函數
- 10. 比較兩個文本文件相互
- 11. 使用不同的比較維護相同的排序順序
- 12. 比較兩列相同的文字
- 13. 如何比較java中的兩個文件,當元素順序不重要時
- 14. 比較兩個XML文件而不關心元素和屬性的順序
- 15. SQL比較兩個colums的值相同
- 16. 比較從兩個相同的選擇
- 17. 比較兩個相同的表MySQL
- 18. 比較兩個文件的程序
- 19. 爲什麼是試驗失敗的HashSet的比較,其中元素的順序似乎無關緊要
- 20. 比較兩個文件中的行
- 21. 慶典:比較兩個文件,以相同的模式
- 22. 比較三個陣列與相同元素的順序
- 23. 比較兩個不同順序的字符串
- 24. 比較兩個字符串以不同的順序
- 25. 如何比較兩個單元在Excel中的順序是否相同?
- 26. 比較具有不同順序的相同元素的數組
- 27. 比較兩個無關的表sql
- 28. 比較兩個數組忽略順序
- 29. 根據順序比較兩個陣列
- 30. 聲明的順序對結構無關緊要嗎?
謝謝 - 我只是用Python寫的類似的東西,因爲沒有時髦的Unix巫術做了。問題解決了! – xnx 2010-11-12 14:02:41
對每個文件進行排序然後運行diff? – 2010-11-12 14:07:41
是的(+1),你100%正確,我只是討厭使用臨時文件!在python 15秒內,我可以得到答案,並有權訪問python變量中的不同行... – Crisfole 2010-11-12 14:15:12