Como descobrir elementos comuns entre dois arquivos?

4

Por exemplo, tenho 2 arquivos com as seguintes informações:

Arquivo nº 1:

12
13
14
15

Arquivo nº 2:

12 1
13 2
14 2
15 6
16 7
17 8

Arquivo de saída:

1
2
2
6

No arquivo de saída, quero apenas os valores da segunda coluna do arquivo # 2, que corresponde à primeira coluna do arquivo # 1. Existe alguma função de utilidade para isso no Linux? Eu sou novo em scripts de shell, alguém pode me ajudar?

    
por MiNdFrEaK 21.09.2012 / 09:12

2 respostas

9

você pode usar o comando join para unir os arquivos em uma coluna específica e awk para analisar a saída.

Para juntar esses arquivos na coluna 1, passe os parâmetros -j 1 para o comando join:

usr@srv % join -j 1 test test2 
12 1

13 2

14 2

15 6

Depois, use awk para imprimir apenas a segunda coluna:

usr@srv % join -j 1 test test2 | awk '{print $2}'
1

2

2

6
    
por 21.09.2012 / 09:39
-1
awk 'NR==FNR{c[$1]++;next};c[$1] == 1' file1.txt file2.txt | awk ' { print $2 } '
    
por 02.12.2017 / 14:04