Как сравнить два текстовых файла с помощью Linux

Это руководство покажет вам, как использовать Linux для сравнения двух файлов и вывода их различий на экран или в файл.

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

Как показано в связанном руководстве, существует много способов открыть окно терминала с помощью Linux. Самое простое — нажать CTRL, ALT а также T ключи одновременно.

Создание файлов для сравнения

Чтобы следовать этому руководству, создайте файл с именем file1, и введите следующий текст:

10 зеленых бутылок на стене
10 зеленых бутылок на стене
Если одна зеленая бутылка должна случайно упасть
Там будет 9 зеленых бутылок, стоящих на стене

Вы можете создать файл, следуя этим инструкциям:


  1. Откройте файл, введя следующую команду:

    нано файл1

    Терминальная команда nano file1


  2. Введите текст в нано-редактор.

    Терминал file1 в нано


  3. Нажмите CTRL а также О сохранить файл.


  4. Нажмите CTRL а также Икс выйти из файла.


Теперь создайте другой файл с именем «file2» и введите следующий текст:

10 зеленых бутылок на стене
Если 1 зеленая бутылка должна случайно упасть
Там будет 9 зеленых бутылок, стоящих на стене

Вы можете создать файл, следуя этим инструкциям:


  1. Откройте файл, введя следующую команду:

    нано файл2


  2. Введите текст в нано-редактор.

    Терминал file2 в нано


  3. Нажмите CTRL а также О сохранить файл.


  4. Нажмите CTRL а также Икс выйти из файла.


Как сравнить два файла с помощью Linux

Команда, используемая в Linux для демонстрации различий между двумя файлами, называется командой diff.

Простейшая форма команды diff выглядит следующим образом:

diff file1 file2

Если файлы совпадают, то при использовании этой команды вывод не будет, однако, поскольку есть различия, вы увидите вывод, подобный следующему:

2,4c2,3
< 10 green bottles standing on the wall
< If one green bottle should accidentally fall
< There would be 9 green bottles standing on the wall
...
> Если 1 зеленая бутылка случайно упала
> На стене будет 9 зеленых бутылок

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

Терминальная команда

Вы можете видеть, что различия между этими двумя файлами следующие:

  • Второй файл имеет только три строки, тогда как первый файл имеет 4. 
  • Второй файл показывает «1 зеленая бутылка» в третьей строке, тогда как первый файл говорит «одна зеленая бутылка»
  • Второй файл говорит «там будет» вместо «там будет» в последней строке

Вывод команды diff показывает, что между строками 2 и 4 первого файла и строками 2 и 3 второго файла имеются различия.

Затем перечисляются строки от 2 до 4 из первого файла, за которыми следуют 2 разные строки во втором файле.

Как просто показать, если файлы разные

Если вы просто хотите узнать, отличаются ли файлы, и не интересуетесь, какие строки отличаются, вы можете выполнить следующую команду:

diff -q file1 file2

Если файлы отличаются, будет отображено следующее:

Файлы file1 и file2 отличаются

Если файлы одинаковые, то ничего не отображается.

Как показать сообщение, если файлы одинаковые

Когда вы запускаете команду, вы хотите знать, что она работает правильно, поэтому вы хотите, чтобы при запуске команды diff отображалось сообщение, независимо от того, являются ли файлы одинаковыми или разными

Чтобы выполнить это требование с помощью команды diff, вы можете использовать следующую команду :.

diff -s file1 file2

Теперь, если файлы одинаковые, вы получите следующее сообщение:

Файлы file1 и file2 идентичны

Как произвести различия бок о бок

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

Вы можете изменить вывод команды diff, чтобы результаты отображались рядом. Для этого выполните следующую команду:

diff -y file1 file2

Выход для файла использует | символ, чтобы показать разницу между двумя строками, a, чтобы показать добавленную строку.

Терминальная команда

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

Ограничение ширины столбца

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

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

diff --width = 5 файл file2

Как игнорировать различия в регистре при сравнении файлов

Если вы хотите сравнить два файла, но вам все равно, совпадает ли регистр букв между двумя файлами, вы можете использовать следующую команду:

diff -i file1 file2

Как игнорировать конечный пробел в конце строки

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

diff -Z file1 file2

Как игнорировать все различия белого пространства между двумя файлами

Если вас интересует только текст в файле и вам все равно, есть ли в одном месте больше пробелов, вы можете использовать следующую команду:

diff -w file1 file2

Как игнорировать пустые строки при сравнении двух файлов

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

diff -B file1 file2

Резюме

Вы можете найти больше информации, прочитав руководство по команде diff.

человек дифференциал

Команду diff можно использовать в ее простейшей форме, чтобы показать различия между двумя файлами, но вы также можете использовать ее для создания файла diff как части стратегии исправления, как показано в этом руководстве к команде исправления Linux. 

Другая команда, которую вы можете использовать для сравнения файлов, это команда cmp, как показано в этом руководстве. Это сравнивает файлы побайтно.

Ссылка на основную публикацию