逐行比较两个大文件

时间:2015-09-07 06:23:07

标签: python linux file iterator

我想知道是否有任何有效的方法来逐行比较2个大文件。

文件1

2
3
2

文件2

2 | haha
3 | hoho
4 | hehe

我只是将每个文件的第一个字符与它们进行比较。目前我正在使用一种非常天真的方法在double for循环中迭代它们。

For i in file 1: 
    line number = 0
    For j in file 2: 
        loop until line number == counter else add 1 to line number 
        Compare line 1 
    increase counter 

不能将两个文件都读入内存。我在linux上使用python,但我对bash解决方案和python脚本解决方案都很开放

2 个答案:

答案 0 :(得分:2)

这样的事情:

diff <(cut -c 1 file1.txt) <(cut -c 1 file2.txt)

diff是用于比较文件行的工具。您可以使用process substitution(匿名管道)来比较仅包含第一个字符的每个文件的版本(使用cut)。

答案 1 :(得分:0)

您可以压缩这两个文件并将它们一起迭代。

df1 <- structure(list(Phone = c("Samsung note", "Samsung note", 
"Nokia lumia", 
"Sony xperia")), .Names = "Phone", class = "data.frame", 
row.names = c(NA, -4L))

df2 <- structure(list(Phone = c("Samsung note", "Samsung note", 
"Nokia lumia", 
"Sony xperia", "Samsungnote", "Nokialumia")), .Names = "Phone", 
class =  "data.frame", row.names = c(NA, -6L))