how to compare two files line by line?

46 views (last 30 days)
Zineb EL MORCHID
Zineb EL MORCHID on 12 Mar 2016
Commented: Adam Danz on 20 Nov 2021 at 22:54
I want to compare two files line by line and count how many lines they have in common , I tried the code below , but it doesn't work , somehow MATLAB stops working , ">>" just disappear
f = fopen('nv.txt','at');
fid = fopen('test.txt');
k = 0;
while ~feof(fid)
s1 = fgetl(fid);
if ~isempty(s1)
while ~feof(f)
s2 = fgetl(f);
if ~isempty(s2)
if(strcmp(s1,s2))
k = k+1;
end
end
end
end
end
fclose(fid);
fclose(f);
disp(k);
  1 Comment
Image Analyst
Image Analyst on 12 Mar 2016
If the second line is missing in one of the files, (and the rest of the lines are just moved up one) then do you say that from line 2 on they are all different?
What if the lines are all there but in some different order?

Sign in to comment.

Accepted Answer

MHN
MHN on 12 Mar 2016
Edited: MHN on 12 Mar 2016
f = fopen('nv.txt');
fid = fopen('test.txt');
k = 0;
while ~feof(fid)
s1 = fgetl(fid);
frewind(f) % start from the first line of the second file
if ~isempty(s1)
while ~feof(f)
s2 = fgetl(f);
if ~isempty(s2)
if(strcmp(s1,s2))
k = k+1;
end
end
end
end
end
fclose(fid);
fclose(f);
disp(k);
  3 Comments
Zineb EL MORCHID
Zineb EL MORCHID on 12 Mar 2016
Yes Thank you, it works , I find out that one of the lines starts with space.

Sign in to comment.

More Answers (2)

Image Analyst
Image Analyst on 12 Mar 2016
Did you try the Compare tool on the Editor tool strip?
  2 Comments
Adam Danz
Adam Danz on 20 Nov 2021 at 22:54
This is best approach.
Also see visdiff.

Sign in to comment.


r r
r r on 11 May 2021
I have two files with similar data and I want to extract them into a file, and I also want to print the same line for the same data in the two files
Please help me
F1 = fopen('E.txt');
T1 = textscan(F1,'%s', 'delimiter', '\n');
fclose(F1);
F2 = fopen('G.txt');
tt2 = textscan(F2,'%s', 'delimiter', '\n');
fclose(F2);
T1s = char(T1{:});
T2s = char(T2{:});
[C,ix,ic] = intersect(T1s,T2s,'rows')
%%%%%%%%%%%%%%%%%%out Fiel :::
dlmwrite('R.txt',C,'%.6f');

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!