2012-11-19 126 views
0

我想比较2个txt文件,检查文件,否则等于,得到输出,并给差(说有一个DIFF线X)文件比较

我想如下:

fid1 = fopen(file_1, 'r'); 
fid2 = fopen(file_2, 'r'); 
lines1 = textscan(fid1,'%s','delimiter','\n'); 
lines2 = textscan(fid2,'%s','delimiter','\n'); 
lines1 = lines1{1}; 
lines2 = lines2{1}; 
fclose(fid1); 
fclose(fid2); 
tf = isequal(lines1,lines2); % this gives 0 or 1 

我想当值为0(文件不同)本地化比较和给文件不同的行或打印内容的差异。

+1

你为什么不使用gnu diff工具? https://www.gnu.org/software/diffutils/ – bdecaf

+0

@bdecaf:diff在Windows上工作? – lola

回答

0

你基本上想要比较两个单元阵列中的每个元素,而不是整个单元阵列。你可以用大多数语言的循环来做到这一点,但当然MATLAB有很多方法来避免循环。这里,cellfun

cellfun(@isequal,lines1,lines2)

(我离开了那里,如果两个单元阵列的大小不等,你必须缩短较长的一个部分。)然后,find对查找有用在任何向量中的某个值的首次(或全部)出现次数。

+0

当文件是differents,cellfun(@ isequal,lines1,lines2)返回一个错误,因为大小不相等 – lola

+0

是的,这就是我所指的“我忽略了部分,如果两个单元格阵列不相等大小,你必须缩短更长的一个。“ –

+0

你是什么意思? – lola