Сначала вы можете прочитать оба файла по строкам:
fid1 = fopen(file1, 'r');
fid2 = fopen(file2, 'r');
lines1 = textscan(fid1,'%s','delimiter','\n');
lines2 = textscan(fid2,'%s','delimiter','\n');
lines1 = lines1{1};
lines2 = lines2{1};
fclose(fid1);
fclose(fid2);
Вы будете иметь 2 клеточные массивы lines1
и lines2
. Вы можете сравнить все массивы с
tf = isequal(lines1,lines2);
Сравнение строк не так очевидно и зависит от ваших потребностей. Что вы хотите сделать, если количество строк отличается? Например, чтобы выяснить, какие существуют строки из file2 в file1 (независимо от того), вы можете сделать:
[idx1 idx2] = ismember(lines1,lines2);
idx2(idx2==0) = [];
idx1
будет логический индекс, представляющий линии в file1, которые имеют одни и те же строки в file2. idx2
будет числовым (позиционным) индексом, где эти строки находятся в файле2 (первое вхождение).
Если число строк одинаковы:
idx_same_lines = strcmp(lines1,lines2);
+1. 'cmp' выполняет побайтовое сравнение; вы хотите 'diff' в Unix для сравнения по линиям. –
@upperBound: это команда оболочки? поэтому он может работать под любой ОС? – lola
Это командная оболочка. «fc» относится к Windows. Для Unix используйте «diff», как указал Андрей. – upperBound