我有两个文件(可能长达150,000行;每行是160个字节),我想查看每个文件中的行是否相同。 diff
对我(直接)不起作用,因为一小部分行在两个文件中以不同的顺序出现。通常,一对线将被转置
查看两个文件中是否出现相同行的最佳方法是什么,但顺序无关紧要?
谢谢,
克里斯
答案 0 :(得分:4)
虽然这是一种稍微昂贵的方式(对于任何更大的我都会重新考虑这个),我会启动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 :(得分:1)
对于仅150k行,只需散列每行并将它们存储在查找表中。然后,对于文件2中的每一行,只需执行查找。
答案 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)