Поиск по сайту:
Усилия на ложном пути множат заблуждения (Ф. Бэкон).

7 способов сравнить текстовые файлы в Linux

29.08.2024
7 способов сравнить текстовые файлы в Linux

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

Чтобы вы могли лучше понять приведенные ниже команды, два файла, используемых в этом посте – file1 и file2 – содержат эти строки:

Kids, the seven basic food
groups are gum, puff pastry,
pizza, pesticides, antibiotics,
and milk duds!!

 

Третий файл, file3, содержит эти строки:

Kids, the six basic food
groups are fruits, vegetables,
grains, protein and dairy
and milk duds!!

 

С помощью команды diff

Команда diff – одна из самых простых команд для определения различий между двумя текстовыми файлами. В первой команде ниже мы сравниваем два файла, которые просто оказались идентичными. В результате выходных данных нет. Во второй команде мы сравниваем два файла с разным содержимым. Символы < и > относятся к первому и второму файлам, а три тире разделяют содержимое и отображают те строки, которые отличаются. Любое идентичное содержимое в этих файлах опущено – как и строка “и milk duds !!” .

$ diff file1 file2

$ diff file1 file3
1,4c1,3
< Kids, the seven basic food
< groups are gum, puff pastry,
< pizza, pesticides, antibiotics,
< and milk duds!!
---
> Kids, the five basic food
> groups are fruits, vegetables,
> grains, protein and dairy

 

Читать  Как заменить строку в файле в Bash

С помощью команды comm

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

$ comm file1 file3
        Kids, the five basic food
comm: file 2 is not in sorted order
        groups are fruits, vegetables,
        grains, protein and dairy
Kids, the seven basic food
comm: file 1 is not in sorted order
groups are gum, puff pastry,
pizza, pesticides, antibiotics,
and milk duds!!
comm: input is not in sorted order

 

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

$ sort file1 > f1; sort file3 > f3
$ comm f1 f3
                and milk duds!!
        grains, protein and dairy
        groups are fruits, vegetables,
groups are gum, puff pastry,
Kids, the seven basic food
        Kids, the six basic food
pizza, pesticides, antibiotics,

 

С помощью команды cmp

Команда cmp без дополнительных опций подтверждает, что файлы разные, и указывает положение первого отличия. В данном случае, это 12– й знак в первой строке.

$ cmp file1 file3
file1 file3 differ: byte 12, line 1
As with the diff command, there is no output if the files have identical content.
$ cmp file1 file2

 

Читать  Как запустить Java из командной строки в Linux

 

С помощью команды diff3

Команда diff3 похожа на команду diff, но позволяет сравнивать три файла вместо двух. Кроме того, формат выходных данных сильно отличается. Символ ====3, включенный в выходные данные ниже, означает, что третий файл отличается. Затем он показывает различия между первыми двумя файлами и третьим.

$ diff3 file1 file2 file3
====3
1:1,3c
2:1,3c
  Kids, the seven basic food
  groups are gum, puff pastry,
  pizza, pesticides, antibiotics,
3:1,3c
  Kids, the six basic food
  groups are fruits, vegetables,
  grains, protein and dairy

 

С помощью команды sdiff

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

$ sdiff file1 file2
Kids, the seven basic food             Kids, the seven basic food
groups are gum, puff pastry,           groups are gum, puff pastry,
pizza, pesticides, antibiotics,        pizza, pesticides, antibiotics,
and milk duds!!                        and milk duds!!

$ sdiff file1 file3
Kids, the seven basic food             | Kids, the six basic food
groups are gum, puff pastry,           | groups are fruits, vegetables,
pizza, pesticides, antibiotics,        | grains, protein and dairy
and milk duds!!                          and milk duds!!

 

С помощью команды colordiff

Команда colordiff отображает различия между двумя файлами, как команда diff, но добавляет цвет, когда содержимое отличается. Первая команда, приведенная ниже, не выводится, поскольку файлы одинаковые. Вторая отображает различия между двумя файлами. На экране вашего компьютера шрифт, используемый для первого набора строк, будет красным, а для второго – зеленым.

$ colordiff file1 file2
$ colordiff file1 file3
1,3c1,3
< Kids, the seven basic food
< groups are gum, puff pastry,
< pizza, pesticides, antibiotics,
---
> Kids, the six basic food
> groups are fruits, vegetables,
> grains, protein and dairy

 

Читать  Советы и хитрости терминала Linux

С помощью команды wdiff

Команда wdiff отображает содержимое сравниваемых файлов (одну копию), если они идентичны. Если они разные, различия отмечаются с помощью квадратных скобок, знаков “минус” и “+” для обозначения их расположения, как во втором примере ниже.

$ wdiff file1 file2
Kids, the seven basic food
groups are gum, puff pastry,
pizza, pesticides, antibiotics,
and milk duds!!
$ wdiff file1 file3
Kids, the [-seven-] {+six+} basic food
groups are [-gum, puff pastry,
pizza, pesticides, antibiotics,-] {+fruits, vegetables,
grains, protein and dairy+}
and milk duds!!

 

Подведение итогов

Не воспринимайте ограниченные команды в этом посте как означающие, что у этих команд нет дополнительных опций. Используйте команду типа wdiff –help, чтобы получить список опций команды.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Программирование часто рассматривается как игра, в которой логика сочетается с…

Спасибо!

Теперь редакторы в курсе.