Вы можете точно указать diff именно то, что вам нужно - ниже:
diff --old-line-format='%L' --new-line-format='%L' --unchanged-line-format='' f1.txt f2.txt
Можно указать вывод diff в очень подробном виде, подобно формату номера printf.
Строки из первого файла test1.csv называются «старыми» строками, а строки второго, [ f8], являются «новыми» строками. Это имеет смысл, когда diff используется, чтобы увидеть, что изменилось в файле.
Необходимые параметры - это те, которые устанавливают формат «старых» строк, «новых» строк и «неизмененных» строк, линий. Необходимые форматы очень просты: для измененных строк, новых и старых, мы хотим выводить только текст строк. %L является символом формата текста строки. Для неизменных строк мы ничего не хотим показывать.
С помощью этого мы можем написать такие параметры, как --old-line-format='%L', и поместить все это вместе, используя ваши данные примера:
$ diff --old-line-format='%L' --new-line-format='%L' --unchanged-line-format='' test1.csv test2.csv
100,4,2,1,7
100,300,500,700
21,22,23,24,25
50,25,700,5
[d9 ] Поскольку файлы имеют разный размер, попробуйте обмениваться входными файлами, если это не имеет значения, может быть, что внутренний работы diff могут обрабатывать один путь лучше другого. Лучше либо меньше памяти, либо меньше вычислений.
Существует опция оптимизации для использования diff с большими файлами: --speed-large-files. Он использует предположения о структуре файла, поэтому неясно, помогает ли это в вашем случае, но стоит попробовать.
Параметры формата описаны в man diff в разделе --LTYPE-line-format=LFMT.