Mesclar dois arquivos

5

Eu tenho este arquivo1.txt

deiauk 9
kespaul 8
luktol 7 
titkur 6

e outro arquivo2.txt

kespaul b
deiauk a 

E eu quero mesclar os dois arquivos em um por primeiro valor, então meu resultado deve ser

deiauk 9 a
kespaul 8 b
luktol 7 
titkur 6
    
por user3334375 02.06.2015 / 11:45

4 respostas

2
sort file2.txt | join -a 1 file1.txt -

join requer entrada classificada. O '-' especifica que a entrada padrão será usada para o segundo arquivo, o que permite que a saída de sort seja usada como entrada. O '-a 1' especifica que linhas não correspondentes do primeiro arquivo serão incluídas na saída.

    
por 02.06.2015 / 12:06
4

Você pode usar o comando join (será bom ter arquivos ordenados)

join file1.txt file2.txt -a 1
    
por 02.06.2015 / 11:58
3

Com awk , você pode fazer:

awk '
  NR==FNR { k[$1]=$2; next }
  { print $0, k[$1] }
' file2.txt file1.txt

Nota: Esta solução awk também funciona em dados de entrada brutos não classificados; não há necessidade de processos caros adicionais.

    
por 02.06.2015 / 11:56
1

Os arquivos devem ser classificados, então aqui está tudo em uma linha.

sort file1.txt > f1s ; sort file2.txt >f2s ; join  -1 1 -2 1 -a 1 -a 2 f1s f2s ; rm f1s f2s
    
por 02.06.2015 / 12:01