Imprime apenas o que é exclusivo para um arquivo comparado a outro no Bash

0

Bom dia a todos,

Eu sei que há muitas perguntas semelhantes já respondidas, mas não consigo encontrar uma resposta satisfatória e isso me deixa louco.

Eu tenho dois arquivos que contêm nomes de host: um que contém todos os que foram abertos para a Internet, o outro registra todos os resultados de varredura de TODOS os nossos hosts, abertos para a Internet ou não.

Arquivo A (1111.com, 1112.com, www.1113.com, 1114.com)

Arquivo B (1111.com, 1199.com, 1299.com, www2.1329.com)

Meu objetivo é imprimir um arquivo que imprima SOMENTE os hosts que são exclusivamente no arquivo B. Eu tentei diff e comm, mas não posso pré-ordenar os arquivos, pois as entradas às vezes são um pouco diferente.

Alguém tem uma solução?

    
por Alistair Wallace 12.07.2018 / 14:36

1 resposta

3

Não poder pré-ordenar os arquivos não é um problema:

comm -13 <(sort fileA) <(sort fileB)

Isso dá

1199.com
1299.com
www2.1329.com

com seus exemplos, supondo que cada host esteja em uma linha separada. -13 informa comm para descartar a coluna 1 (linhas exclusivas para o primeiro arquivo) e 3 (linhas comuns para ambos os arquivos), deixando apenas as linhas exclusivas para o segundo arquivo.

    
por 12.07.2018 / 14:42

Tags