Простой вывод команды diff

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

cat -A file1.txt a$ b$ c$ d$ cat -A file2.txt b$ c$ d$ e$

Если я использую команду diff так:

diff file1.txt file2.txt

Я получаю:

1d0 < a 4a4 > e

То, что я хотел бы знать, это то, что они означают по линиям 1 и 0 в 1d0 и 4 и 4 в 4a4, в дополнение к знакам меньше и больше. В более общем плане, как получилось меньше знака перед а, а не больше знака? В чем разница?

6
задан 13 June 2017 в 04:52

4 ответа

Здесь подробно описывается команда diff.

В частности, 1d0 означает, что вы должны удалить одну строку из первого файла, чтобы они синхронизируются до нулевой линии. Это не первая строка файла, в основном это говорит. Если вы сделаете это удаление, оба файла начинаются с пустой точки. Следующая строка вывода в файле 1 - это первая строка вывода из обоих файлов (т. Е. Следующая строка должна быть строкой 1).

Возможно, вам лучше сработать diff -c file1.txt file2.txt, если вы хотите что-то, что легче читать.

3
ответ дан 18 July 2018 в 11:45

Из руководства diff:

'lar' Добавьте строки в диапазоне r второго файла после строки l первого файла. Например, «8a12,15» означает добавление строк 12-15 файла 2 после строки 8 файла 1; или, если изменить файл 2 в файл 1, удалите строки 12-15 файла 2. 'fct' Замените строки в диапазоне f первого файла на строки в диапазоне t второго файла. Это похоже на комбинированное добавление и удаление, но более компактное. Например, «5,7c8,10» означает изменения строк 5-7 файла 1 для чтения в виде строк 8-10 файла 2; или, если изменить файл 2 в файл 1, измените строки 8-10 файла 2, чтобы читать строки 5-7 файла 1. 'rdl' Удалите строки из диапазона r из первого файла; строка l, где они появлялись во втором файле, если бы они не были удалены. Например, «5,7d3» означает удаление строк 5-7 файла 1; или, если изменить файл 2 в файл 1, добавьте строки 5-7 файла 1 после строки 3 файла 2.

> и < имеют смысл, если вы посмотрите на diff manual :

'lar' Добавить строки в диапазоне r второго файла после строки l первого файла. Например, «8a12,15» означает добавление строк 12-15 файла 2 после строки 8 файла 1; или, если изменить файл 2 в файл 1, удалите строки 12-15 файла 2.

' lar ' Файлы отличаются, и только второй файл содержит линия.

'& lt;' Файлы отличаются, и только первый файл содержит строку.

бок о бок: The Way that can be told of is n < The name that can be named is no < The Nameless is the origin of He The Nameless is the origin of He The Named is the mother of all t | The named is the mother of all t > Therefore let there always be no Therefore let there always be no so we may see their subtlety, so we may see their subtlety, And let there always be being, And let there always be being, so we may see their outcome. so we may see their outcome. The two are the same, The two are the same, But after they are produced, But after they are produced, they have different names. they have different names. > They both may be called deep and > Deeper and more profound, > The door of all subtleties! normal: 1,2d0 < The Way that can be told of is not the eternal Way; < The name that can be named is not the eternal name. 4c2,3 < The Named is the mother of all things. --- > The named is the mother of all things. > 11a11,13 > They both may be called deep and profound. > Deeper and more profound, > The door of all subtleties!
11
ответ дан 18 July 2018 в 11:45

Здесь подробно описывается команда diff.

В частности, 1d0 означает, что вы должны удалить одну строку из первого файла, чтобы они синхронизируются до нулевой линии. Это не первая строка файла, в основном это говорит. Если вы сделаете это удаление, оба файла начинаются с пустой точки. Следующая строка вывода в файле 1 - это первая строка вывода из обоих файлов (т. Е. Следующая строка должна быть строкой 1).

Возможно, вам лучше сработать diff -c file1.txt file2.txt, если вы хотите что-то, что легче читать.

3
ответ дан 24 July 2018 в 19:51
  • 1
    Благодарю. Этот сайт ответил на многие мои вопросы. У меня есть еще один вопрос. В 1d0 нуль ссылается на второй файл перед строкой 1 или b, правильно? – John_Patrick_Mason 13 June 2017 в 05:34

Из руководства diff:

'lar' Добавьте строки в диапазоне r второго файла после строки l первого файла. Например, «8a12,15» означает добавление строк 12-15 файла 2 после строки 8 файла 1; или, если изменить файл 2 в файл 1, удалите строки 12-15 файла 2. 'fct' Замените строки в диапазоне f первого файла на строки в диапазоне t второго файла. Это похоже на комбинированное добавление и удаление, но более компактное. Например, «5,7c8,10» означает изменения строк 5-7 файла 1 для чтения в виде строк 8-10 файла 2; или, если изменить файл 2 в файл 1, измените строки 8-10 файла 2, чтобы читать строки 5-7 файла 1. 'rdl' Удалите строки из диапазона r из первого файла; строка l, где они появлялись во втором файле, если бы они не были удалены. Например, «5,7d3» означает удаление строк 5-7 файла 1; или, если изменить файл 2 в файл 1, добавьте строки 5-7 файла 1 после строки 3 файла 2.

> и < имеют смысл, если вы посмотрите на diff manual :

'lar' Добавить строки в диапазоне r второго файла после строки l первого файла. Например, «8a12,15» означает добавление строк 12-15 файла 2 после строки 8 файла 1; или, если изменить файл 2 в файл 1, удалите строки 12-15 файла 2.

' lar ' Файлы отличаются, и только второй файл содержит линия.

'& lt;' Файлы отличаются, и только первый файл содержит строку.

бок о бок: The Way that can be told of is n < The name that can be named is no < The Nameless is the origin of He The Nameless is the origin of He The Named is the mother of all t | The named is the mother of all t > Therefore let there always be no Therefore let there always be no so we may see their subtlety, so we may see their subtlety, And let there always be being, And let there always be being, so we may see their outcome. so we may see their outcome. The two are the same, The two are the same, But after they are produced, But after they are produced, they have different names. they have different names. > They both may be called deep and > Deeper and more profound, > The door of all subtleties! normal: 1,2d0 < The Way that can be told of is not the eternal Way; < The name that can be named is not the eternal name. 4c2,3 < The Named is the mother of all things. --- > The named is the mother of all things. > 11a11,13 > They both may be called deep and profound. > Deeper and more profound, > The door of all subtleties!
11
ответ дан 24 July 2018 в 19:51

Другие вопросы по тегам:

Похожие вопросы: