how to compare two files line by line?
    9 ビュー (過去 30 日間)
  
       古いコメントを表示
    
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
      
      
 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
      
 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
      
 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.
その他の回答 (2 件)
  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');
0 件のコメント
参考
カテゴリ
				Help Center および File Exchange で Dictionaries についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!