Как сохранить результат diff в Linux - PullRequest
17 голосов
/ 12 октября 2011

Как получить результат в другом файле после применения diff к файлу A.txt и B.txt.

Предположим, файл A.txt имеет:

a
b
c

Файл B.txtимеет:

a
b

при запуске

diff A.txt B.txt Это дает результат как c, но как сохранить его в файле C.txt?

Ответы [ 4 ]

19 голосов
/ 12 октября 2011

Утилита diff выводит данные на стандартный вывод (обычно консоль). Как и любая утилита UNIX, которая делает это, ее вывод может быть очень просто перенаправлен в файл, подобный этому:

diff A.txt B.txt >C.txt

Это означает «выполнить команду diff с двумя аргументами (файлы A.txt и B.txt) и поместить все, что в противном случае отображалось бы на консоли, в файл C.txt». Сообщения об ошибках все равно будут отправляться на консоль.

Чтобы сохранить вывод diff в файл и , а также отправить его на терминал, используйте tee, например, так:

diff A.txt B.txt | tee C.txt

tee будет дублировать данные для всех именованных файлов (только C.txt здесь), а также для стандартного вывода (скорее всего, терминала).

5 голосов
/ 12 октября 2011

Используя >, вы можете перенаправить вывод в файл. Например:

    diff A.txt B.txt > C.txt

В результате вывод команды diff будет сохранен в файле с именем C.txt.

3 голосов
/ 12 октября 2011

Использование Перенаправление вывода.

diff file1 file2> output

будет хранить разность file1 и file2 для вывода

0 голосов
/ 22 декабря 2018

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

Интересно, что когда я перенаправил стандартную ошибку, я все еще пропускал некоторые вещи:

diff -qr <DirA> <DirB> 2>&1 > mydiff.txt

Единственный способ увидеть результатывсе было так:

diff -qr <DirA> <DirB> |tee mydiff.txt

Я сравнивал результаты смонтированного каталога live-cd после копирования на внешний HD

...