2012-11-19 180 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