Como escrever a diferença entre dois arquivos em um arquivo

0

Dizendo que tenho dois arquivos: a.txt e b.txt .

O conteúdo de a.txt :

hello world

O conteúdo de b.txt :

hello world
something else

É claro que posso usar vimdiff para verificar a diferença. Posso garantir que a.txt seja um subconjunto de b.txt , o que significa que b.txt deve conter todas as linhas existentes em a.txt (apenas como o exemplo acima).

Minha pergunta é como gravar linhas que existem em b.txt , mas não existem em a.txt em um arquivo?

    
por Yves 06.03.2018 / 07:47

2 respostas

3
comm -1 -3 a.txt b.txt > c.txt

O -1 exclui as linhas que estão apenas em a.txt e o -3 exclui as linhas que estão em ambos. Assim, apenas as linhas exclusivamente em b.txt são produzidas (consulte man comm ou comm --help para detalhes). A saída é redirecionada para c.txt

Se você quiser a diferença entre os dois arquivos, use diff em vez de comm . por exemplo,

diff -u a.txt b.txt > c.txt
    
por 06.03.2018 / 07:57
1

Se você não se importa com o subconjunto, pode usar apenas

diff a.txt b.txt|grep ">"|cut -c 3- > foo.txt

.

$ cat a.txt
hello world
$ cat b.txt
hello world
something else
$ diff a.txt b.txt|grep ">"|cut -c 3- > foo.txt
$ cat foo.txt
something else
    
por 06.03.2018 / 08:04

Tags