Введение в Unix

         

Команды сравнения файлов (diff, cmp, comm)


В процессе разработки программного обеспечения возникает необходимость сравнения версий файла на разных этапах его разработки. Узнать, чем версии отличаются друг от друга, удобно командой diff, которая показывает разницу (difference) двух файлов; сравнение файлов осуществляется по строкам (записям). В результате выполнения команды печатаются строки измененные (c), уничтоженные (d) и добавленные (a) во втором файле-аргументе по сравнению с первым.

Пример:

$ cat people Mary Clark 101 Sally Smith 113 Jane Buily 121 $ cat people.new Mary Clark 101 Sally White 113 James Walker 112 $ diff people people.new 2 c 2 <Sally Smith 113 - - - - >Sally White 113 3 d 2 <Jane Baily 121 3 a 3 >James Walker 112

Знаки < и > означают удаление и добавление строк; команда показывает также номера строк, в которых найдены отличия.

Если строки отличаются только числом разделяющих слова пробелов, также отличия можно подавить ключом -b (blank).

Например:

$ diff -b oldfile newfile $.

Другая возможность быстрого сравнения файлов - команда cmp (compare), реализованная на основе побайтового (побуквенного) сравнения двух файлов.

Пример:

$ cmp people people.new people, people.new differ: char 17, line 2

В качестве результата печатается число отличающихся байтов (букв) и строк (линий).

Ключ -l (long) позволяет распечатать разницу файлов в виде байтов (адрес и отличающиеся значения).

Например:

$ cmp people people, new 26 123 127 27 155 150 30 150 155 - - - - - - - - 197 60 61 198 60 61




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

Например:

$ cat people Mary Clark 101 Sally Smith 113 Jane Baily 121 $ cat people.new Mary Clark 101 Sally White 113 James Walker 112 $ comm people people.new Mary Clark Sally Smith Sally White Jane Baily James Walker

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

Можно подавить печать одного или двух столбцов, указывая его номер в виде ключа, например (печать только третьего столбца):

$ comm -12 people people.new Mary Clark $




Содержание раздела