Mesclando / combinando 2 arquivos de texto de acordo com o campo numérico

5

Eu tenho 2 arquivos de texto

file_1:

14595|Age 35|Salary xx|Position ax|2013|Info 1|Info 2|Info 3|Info 4|Info 5
14649|Age 30|Salary xx|Position az|2015|Info 1|Info 2|Info 3|Info 4|Info 5

arquivo_2:

14595|Address xx|Info 6|Info 7|Info 8
14649|Address xxxz|Info 6|Info 7|Info 8

Eu quero uma maneira de pesquisar a primeira coluna do arquivo_1 (a numérica) e encontrar sua correspondência no arquivo_2 e combinar as informações de ambos os arquivos no arquivo_3 sem o campo da chave numérica, então a saída é como

arquivo_3

Age 35|Salary xx|Position ax|2013|Info 1|Info 2|Info 3|Info 4|Info 5|Address xx|Info 6|Info 7|Info 8
Age 30|Salary xx|Position az|2015|Info 1|Info 2|Info 3|Info 4|Info 5|Address xxxz|Info 6|Info 7|Info 8
    
por Assem 16.12.2014 / 20:35

2 respostas

2

Use join :

$ join -t'|' file_1 file_2
14595|Age 35|Salary xx|Position ax|2013|Info 1|Info 2|Info 3|Info 4|Info 5|Address xx|Info 6|Info 7|Info 8
14649|Age 30|Salary xx|Position az|2015|Info 1|Info 2|Info 3|Info 4|Info 5|Address xxxz|Info 6|Info 7|Info 8

-t indica o separador de campos.

Para participar de trabalhos, os arquivos devem ser classificados. Você pode usar sort para isso.

    
por 16.12.2014 / 20:49
1

com awk :

$ awk 'BEGIN{FS=OFS="|"}NR==FNR{a[$1]=$0;next}{$1=a[$1]}1' file_1 file_2
14595|Age 35|Salary xx|Position ax|2013|Info 1|Info 2|Info 3|Info 4|Info 5|Address xx|Info 6|Info 7|Info 8
14649|Age 30|Salary xx|Position az|2015|Info 1|Info 2|Info 3|Info 4|Info 5|Address xxxz|Info 6|Info 7|Info 8
    
por 16.12.2014 / 21:19