Como alterar os valores de uma coluna usando os valores de outra coluna de um arquivo diferente

1

Eu não sei qual comando devo usar no unix.

Digamos que eu tenha um arquivo como este:

A  23
B  52
C  36
F  25

e segundo arquivo com 3 colunas:

A  aligator  2
B  panda  3
C  bear  4
D  pig  1
E  yeti  0
F  shark  9
G  dog  10
H  cat  1

Agora eu gostaria de substituir os valores da primeira coluna (em 1 arquivo) usando os valores da segunda coluna (2 arquivos) se os valores das primeiras colunas corresponderem entre os arquivos

exemplo de saída:

aligator  23
panda  52
bear  36
shark  25

Alguém pode me ajudar?

melhor.

    
por k_a_r_o_l 04.06.2018 / 16:34

2 respostas

3

Se os arquivos estiverem classificados, você pode usar join do coreutils:

join -o '2.2 1.2' file1 file2

Saída:

aligator 23
panda 52
bear 36
shark 25
    
por 04.06.2018 / 17:57
1

O awk é uma boa ferramenta para este trabalho:

awk 'NR==FNR{a[$1]=$2;next}a[$1]{print $2,a[$1]}' file1 file2

Quando o primeiro arquivo estiver sendo lido ( FN==FNR ), preencha a matriz a com valores da segunda coluna e indexados da primeira coluna. Então, quando o segundo arquivo for processado, imprima sua segunda coluna e segunda coluna do arquivo1.

Saída:

aligator 23
panda 52
bear 36
shark 25
    
por 04.06.2018 / 16:58