我有两个文件(可能长达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