필터 지우기
필터 지우기

how to compare two files line by line?

조회 수: 4 (최근 30일)
Zineb EL MORCHID
Zineb EL MORCHID 2016년 3월 12일
댓글: Adam Danz 2021년 11월 20일
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
Image Analyst
Image Analyst 2016년 3월 12일
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?

댓글을 달려면 로그인하십시오.

채택된 답변

MHN
MHN 2016년 3월 12일
편집: MHN 2016년 3월 12일
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
MHN
MHN 2016년 3월 12일
Please use the "accepted answer" button. Are you sure? I run the program line by line and it compares every lines include the first one.
Zineb EL MORCHID
Zineb EL MORCHID 2016년 3월 12일
Yes Thank you, it works , I find out that one of the lines starts with space.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Image Analyst
Image Analyst 2016년 3월 12일
Did you try the Compare tool on the Editor tool strip?
  댓글 수: 2
Zineb EL MORCHID
Zineb EL MORCHID 2016년 3월 12일
Not really,I actually want the code to use it as a function in my program. Thank you
Adam Danz
Adam Danz 2021년 11월 20일
This is best approach.
Also see visdiff.

댓글을 달려면 로그인하십시오.


r r
r r 2021년 5월 11일
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');

카테고리

Help CenterFile Exchange에서 Graph and Network Algorithms에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by