Требуется точный вывод разницы между двумя файлами. Данные были в строках, разделенных запятыми, и было количество строк, например, я показал вам только одну строку. Каждая строка должна искать каждую строку в другом файле.
пример:
file1.txt
abc,def,ghi,klm,nop
one,two,three,four,five,six
file2.txt
abc,def,ghi,klm,nop
one,two,three,test,four,five,six
ожидаемый результат:
test
Всемирный классический подход gnu awk:
awk -v RS=",|\n" 'NR==FNR{seen[$0]++;next}!seen[$0]' file1 file2
test
Это работает, потому что мы также используем запятую в качестве разделителя строк/записей awk (RS), и, таким образом, мы получаем следующий вывод для каждого файла:
awk -v RS=",|\n" '{print $0}' file1
abc
def
ghi
klm
nop
one
two
three
four
five
six
Python подход с difflib (помощники для вычисления дельт) и sys модули:
Different.py :
import difflib, sys
with open(sys.argv[1], 'r') as f1, open(sys.argv[2], 'r') as f2:
differ = difflib.Differ()
for l in differ.compare(f1.read().split(','), f2.read().split(',')):
if (l.startswith('+ ') or l.startswith('- ')):
sys.stdout.write(l[2:] + '\n')
Использование:
python differ.py file1.txt file2.txt
Вывод:
test
difflib.Differ
— класс для сравнения последовательностей строк текста и создания удобочитаемых различий или дельт