diff
diff — утиліта UNIX, використовується для показу списку різниць між двома файлами. Для текстових файлів різниця показується рядок за рядком у будь-якому з декількох форматів, зазначених в параметрах командного рядка. Цей список виводиться в термінах рядків тексту, тобто, показуючи які рядки потрібно вставити, видалити або замінити, щоб перетворити перший файл на другий. Для бінарних файлів diff повідомляє лише про факт різниці. Для однакових файлів diff не виводить нічого.
Стандартний формат виводу інформації
Нормальний формат виводу команди виглядає так:
Команда зміни файлу \< from-file-line \< from-file-line ... --- \> to-file-line \> to-file-line ...
Всього є три типи команд зміни файлу. Кожна складається з номера рядка, або з діапазону рядків, розділених комою, першого файлу, однієї літери (a, c,d) для ідентифікації команди зміни, та номера рядка, або діапазону рядків, розділених комою, з другого файлу. Кожен номер рядка, є номером рядка файлу, з якого він був узятий. Типи команд це:
'lar' — Додати рядки в діапазоні r другого файлу після номера рядка l першого файлу. Як приклад, «4a11,17» означає, додати рядки 11-17 з другого файлу після 4 рядка першого файлу; або, якщо приводити файл 2 до файлу 1, тоді видалити з файлу 2 рядки 11-17.
'fct' — Замінити рядки в діапазоні f першого файлу, рядками з діапазону t другого файлу. Як приклад, «3,6c9,12» означає, замінити рядки 3-6 першого файлу рядками 9-12 з другого файлу; або, якщо приводити файл 2 до файлу 1, тоді замінити рядки 9-12 другого файлу рядками 3-6 з першого файлу.
'rdl' — Видалити рядки з діапазону r для першого файлу. l вказує на місце вставки рядків r з першого файлу в другий для оберненої логіки. Як приклад, «4,6d2» означає видалити рядки 4-6 з першого файлу; або, якщо приводити файл 2 до файлу 1, вставити рядки 4-6 першого файлу в другий після рядка 2.
Приклади застосування
- Стандартне порівняння двох файлів
diff file1 file2
- Отримання команд для редактора ed
diff -e file1 file2
- Ігнорування верхнього і нижнього регістру символів
diff -i file1 file2
- Ігнорування пустих місць (пробілів, табуляцій, порожніх рядків …)
diff -w file1 file2
- Вивід тільки факту різниці файлів
diff -q file1 file2
- Рекурсивне порівняння файлів у підкаталогах
diff -r dir1 dir2
Посилання
- diff — Сторінки довідника Linux (укр.)
- diff man з Commands & Utilities Reference, The Single UNIX® Specification, Issue 7 from The Open Group
- File comparison на Open Directory Project
- GNU Diff utilities. Made available by the Free Software Foundation. Free Documentation. Free source code.
- JavaScript Implementation