различение двух файлов и получение уникального вывода в третьем

используйте -d опцию даты, например,

date -d yesterday

например

> date
Mon Oct 17 07:36:10 CEST 2016
> date -d yesterday
Sun Oct 16 07:36:17 CEST 2016

вы также можете использовать формат +%

date -d yesterday +%A-%d-%B

воскресенье-16-октябрь

смотрите man date

2
01.04.2017, 17:20
2 ответа

Это, вероятно, самый простой способ. Обратите внимание, что < - это пропуск, а | указывает на то, что символ в строке отличается. (В строке 5 в file1.txt при копировании пропущены пробельные символы).

$ diff -y file1.txt file2.txt > diff.txt

1   StartInstall, CDM_2.5B263, OK                               1   StartInstall, CDM_2.5B263, OK
2   EndInstall, CDM_2.5B263, SUCCESS                            2   EndInstall, CDM_2.5B263, SUCCESS
3   StartPatch, CDM_2.5.0.2B1, OK                             <
4   StartPatch, CDM_2.5.0.3B1, OK                               4   StartPatch, CDM_2.5.0.3B1, OK
5   EndPatch, CDM_2.5.0.3B1, SUCCESS                          | 5   EndPatch, CDM_2.5.0.3B1, SUCCESS

Это не выводит новый файл, но вы получаете сеанс vimdiff, который визуально сравнивает два файла и выделяет недостающие строки и символы очень интуитивно.

$ vimdiff file1.txt file2.txt

1
27.01.2020, 22:03

Использование comm, поскольку файлы отсортированы:

comm -3 file1 file2 > result.txt

Вывод содержит строки, которые присутствуют в файле1, но отсутствуют в файле2, а также строки, которые присутствуют в файле2, но не файл1 с префиксом табуляции.

Если файлы не отсортированы, сначала отсортируйте их. Предполагая, что вы используете bash, ksh или zsh, а не простой sh:

comm -3 <(sort file1) <(sort file2) > result.txt
2
27.01.2020, 22:03

Теги

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