Comparando dados entre 2 arquivos diferentes no Unix

0

Eu tenho dois arquivos diferentes -

Arquivo 1

2
4
6
8
10
12

Arquivo 2

2
3
5
6
10
12

Eu quero comparar 2 arquivos e obter os dados de saída que estão no Arquivo 1, mas não no Arquivo 2 -

Saída

4
8

Estou usando o comando abaixo, mas não obtendo a saída desejada -

comm -23 file1 file2

    
por Praveen Verma 13.06.2018 / 17:26

2 respostas

4

Para que comm funcione corretamente, os dois arquivos devem ser classificados lexicograficamente, não numericamente. Você pode classificar seus arquivos antes de chamar comm usando

sort -o file1 file1
sort -o file2 file2 

Então:

$ comm -23 file1 file2
4
8

Ou, você pode ordenar os arquivos ao mesmo tempo que chama comm , se o seu shell suportar substituições de processos:

$ comm -23 <( sort file1 ) <( sort file2 )
4
8
    
por 13.06.2018 / 17:36
2

Você pode usar o grep

grep -F -x -f 'File2' -v 'File1'

Padrão de cadeias fixas (-F) no Arquivo2 (-f)

Use -x para corresponder linhas inteiras. Caso contrário, "0123" no Arquivo1 seria excluído da saída devido a "12" no Arquivo2.

encontre linha semelhante e inversa com (-v)

    
por 13.06.2018 / 17:46