Что означают цифры в строке «@@» на выходе diff?

Вот пример Unix Shell diff , от Version Control от Git, от Loeliger, 2ed:

введите описание изображения здесь

Давайте подробно рассмотрим разницу.

В заголовке исходный файл обозначается – – – и новый файл – +++.

Строка @@ предоставляет контекст номера строки для обеих версий файлов.

Что означают цифры в строке «@@»?

2 Solutions collect form web for “Что означают цифры в строке «@@» на выходе diff?”

Это номера строк для старых / новых файлов, которые помогают программе patch (или аналогичной) декодировать унифицированный-diff.

  • Число после запятой – это длина фрагмента (в старом или новом файле) и
  • номер перед запятой – номер строки для начала фрагмента.
  • Знаки + и - относятся к добавлению и удалению строк, соответственно.

В вашем примере строка

 @@ -1,4 +1,5 @@ 

использует знаки - и + как аналогию для знаков < и > используемых в нормальном выходе diff для файлов влево / вправо. Оба этих формата пытаются чередовать различия. (Контекстный анализ показывает до и после кусков, а не чередование).

Унифицированный diff – это особый формат программы diff ; другие широко поддерживаемые форматы обсуждаются в разделе « Дифференциальные форматы ».

Дальнейшее чтение:

  • 2.2.2.2 Подробное описание унифицированного формата
  • Как читать патч или diff и понимать его структуру, чтобы применить его вручную
  • diff Форматы вывода
  • diff (POSIX)

В документации по GNU diff объясняется это, в разделе « Унифицированный формат :

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

  @@ from-file-line-numbers to-file-line-numbers @@ line-from-either-file line-from-either-file... 

Если кусок содержит только одну строку, появляется только номер его начальной строки. В противном случае его номера строк выглядят как «start, count». Предполагается, что пустой кусок запускается на линии, которая следует за ломом.

Если ханк и его контекст содержат две или более строк, номера строк выглядят как «start, count». В противном случае появляется только номер его конечной линии. Предполагается, что пустой кусок заканчивается на линии, которая предшествует кушетке.

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

 '+' A line was added here to the first file. '-' A line was removed here from the first file. 
  • Как сделать diff распечатать полный diff файла, если файл не существует?
  • Команда diff -B не симметрична?
  • Total Commander «сравнивает контент», как альтернатива?
  • Что означает восклицательный знак при разностном выходе?
  • Diff статистики каталогов sumarry (git diff --stat, как для non-git repo)
  • Используйте Diff to Exclude Quote Symbol - "
  • Результат diff двух файлов с коммутируемыми линиями говорит, что отсутствует одна и та же строка дважды
  • Что означает тире «-» в командной строке Unix?
  • Как я могу использовать diff или любую другую команду для сравнения двух текстовых файлов
  • Как я могу получить коэффициент разницы с помощью «diff» или другой команды?
  • Есть ли сжатый бок о бок diff формат?
  • Interesting Posts

    Цветной вывод терминала игнорирует последовательность сброса. Цвет продолжается

    Можно ли переключиться на другой процесс на другом терминале tty # с терминала ssh?

    cclive: какие регулярные выражения разрешены?

    cd в неизвестный каталог по известному пути

    Перенаправить все выходные данные с подсказкой в ​​файл

    Как предотвратить добавление / удаление цикла udev

    Как исправить курсор терминала GNOME?

    Как реализовать подстановку процесса (используя скрипт bash) в оболочке, которая не имеет этого?

    Как распечатать хорошо отформатированный код

    Жесткий диск динамический / dev / sd * ошибка имен

    GRUB устанавливается с каждой ОС. Какой из них действительно используется?

    Как удалить строки между двумя скобками в Unix

    Как заставить Konqueror быть файловым менеджером по умолчанию?

    GNOME предотвращает VGA с высоким разрешением без информации EDID по VGA

    Как использовать crontab и mutt для выполнения команды и отправки ее вывода?

    Linux и Unix - лучшая ОС в мире.