Comparando dois arquivos e imprimindo o conteúdo

0

Eu quero comparar dois arquivos e quero a saída com o conteúdo exclusivo de ambos os arquivos + conteúdo comum do primeiro arquivo.

Exemplo: -

Arquivo A.txt

A=x
B=y
C=z

Arquivo B.txt

A=p
D=q
E=r

Saída: -

A=x
B=y
C=z
D=q
E=r

Por favor, ajude-me a resolver isso. Eu quero fazer isso no servidor Linux para qualquer comando ou script de shell para isso.

    
por Arpit Gupta 08.07.2016 / 12:44

1 resposta

3

Você pode usar awk :

$ awk -F= '{a[$1]++; if(a[$1]==1){print}}' A.txt B.txt  
A=x
B=y
C=z
D=q
E=r

Explicação

  • a[$1]++; : salva o primeiro campo como uma chave na matriz a e incrementa o valor associado a essa chave em um. Isso significa que na primeira vez que uma chave é vista (por exemplo, o primeiro A=x ), o valor será 1, mas o segundo será 2. Isso nos permite contar elementos exclusivos.

  • if(a[$1]==1){print} : se o primeiro campo foi visto apenas uma vez, imprima.

Como estamos processando B.txt após A.txt , os valores em A.txt são os que são mantidos.

    
por 08.07.2016 / 12:51