Como remover linhas idênticas de dois arquivos de texto?

1

INPUT (dois arquivos de texto):

> cat foo.txt 
alpha
beta
delta
> 

e

> cat bar.txt 
gamma
epsilon
beta
> 

OUTPUT (remove linhas que aparecem em ambos os arquivos):

> SOMEMAGIC foo.txt < bar.txt > foofixed.txt
> cat foofixed.txt
alpha
delta
> 

e

> SOMEMAGIC bar.txt < foo.txt > barfixed.txt
> cat barfixed.txt
gamma
epsilon
> 

Pergunta : como fazer isso?

    
por PeterBill 07.02.2017 / 10:31

1 resposta

2

Você pode usar comm para isso, mas precisa que a entrada seja classificada.

comm -23 <(sort foo.txt) <(sort bar.txt) > foofixed.txt
comm -13 <(sort foo.txt) <(sort bar.txt) > barfixed.txt

-23 significa "Mostrar apenas as linhas exclusivas do arquivo 1".

    
por 07.02.2017 / 10:34