sdiff

Что делает команда sdiff в Linux

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

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

Пример простого использования:

Bash
sdiff old_version.txt new_version.txt

В результате вы получите две колонки текста с визуальными обозначениями различий.

Основные параметры команды sdiff

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

1. Опция -s — скрыть одинаковые строки

Если вам нужно видеть только различия, используйте ключ -s (или --suppress-common-lines).
Пример:

Bash
sdiff -s file1.txt file2.txt

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

2. Опция -w — задать ширину вывода

Параметр -w позволяет указать ширину вывода в символах. Это удобно, если вы работаете в терминале с ограниченным пространством.
Пример:

Bash
sdiff -w 100 file1.txt file2.txt

Здесь ширина сравнения ограничена 100 символами.

3. Опция -o — объединение файлов

С помощью опции -o можно сохранить результат сравнения в новый файл, где программа предложит вам объединить различия вручную.
Пример:

Bash
sdiff -o merged.txt file1.txt file2.txt

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

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

4. Опция -i — игнорировать регистр

Иногда различия в регистре символов не имеют значения. В таких случаях пригодится флаг -i.
Пример:

Bash
sdiff -i configA.cfg configB.cfg

Утилита проигнорирует отличия между заглавными и строчными буквами.

Как интерпретировать результаты работы sdiff

Команда sdiff в Linux отображает результат сравнения в виде двух колонок и специальных символов между ними.

СимволЗначение
<Строка присутствует только в левом файле
>Строка присутствует только в правом файле
``
(пробел)Строки совпадают

Пример вывода:

Bash
line one                  | line one modified
line two                  <
                         > line three new

Из примера видно, что строка «line one» изменена, «line two» удалена, а «line three new» добавлена.

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

Примеры использования команды sdiff в Linux

Рассмотрим практические примеры, где команда sdiff в Linux может быть полезна.

Сравнение версий кода

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

Bash
sdiff script_v1.py script_v2.py

Утилита покажет построчные изменения кода, что особенно удобно при анализе коммитов вне Git.

Сравнение конфигурационных файлов

Для DevOps-инженеров и системных администраторов:

Bash
sdiff /etc/nginx/nginx.conf /backup/nginx.conf

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

Интерактивное объединение изменений

С помощью:

Bash
sdiff -o result.txt version1.txt version2.txt

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

Полезные комбинации и интеграция с другими командами

Команда sdiff в Linux часто используется в связке с другими инструментами командной строки.

  • Чтобы сравнить файлы после сортировки строк: sdiff <(sort fileA.txt) <(sort fileB.txt) Здесь используется подстановка процессов, что позволяет сравнивать отсортированные версии файлов.
  • Чтобы исключить определённые строки из сравнения: grep -v "DEBUG" file1.txt > temp1 && grep -v "DEBUG" file2.txt > temp2 sdiff temp1 temp2 Так можно игнорировать логирующие строки, оставив только важные различия.

Когда стоит использовать sdiff вместо diff

Хотя diff — более известная команда, команда sdiff в Linux удобнее для визуального анализа изменений.
Основное отличие заключается в формате вывода:

  • diff отображает различия в патч-стиле (удобно для автоматизации);
  • sdiff показывает две колонки (удобно для чтения и ручного слияния).

Если вам нужно понять, что именно изменилось, а не просто создать патч, sdiff будет лучшим выбором.

Заключительный совет

Используйте команду sdiff в Linux для ручного анализа и сравнения файлов, особенно при работе с конфигурациями или скриптами.
Она экономит время, делает различия более наглядными и позволяет безопасно объединять изменения.
Не забывайте про флаги -s, -w и -o — именно они делают инструмент гибким и мощным.