Diff для получения только числа разных строк

Могу ли я использовать команду diff, чтобы узнать, отличаются ли два файла на k строк?

Я не хочу контекстную разницу, просто общее количество строк, которые отличаются между двумя файлами. Лучше всего, если результатом будет только одно целое число.

Ответ 1

Да, вы можете, и в режиме реального Linux вы можете использовать несколько команд, соединенных вместе для выполнения задачи.

Сначала вам нужно использовать команду diff, чтобы получить различия в файлах.

diff file1 file2

Это даст вам список изменений. Те, которые вас интересуют, это строки с префиксом " > "

Вы используете инструмент grep, чтобы отфильтровать их следующим образом

diff file1 file2 | grep "^>"

наконец, после того, как у вас есть список изменений, которые вас интересуют, вы просто используете команду wc в режиме линии, чтобы подсчитать количество изменений.

diff file1 file2 | grep "^>" | wc -l

и у вас есть прекрасный пример философии, о которой идет речь в Linux.

Ответ 2

diff может выполнять всю первую часть работы, но не считает; wc -l делает все остальное:

diff -y --suppress-common-lines file1 file2 | wc -l