Adicionar coluna com base no termo de pesquisa

0

Eu tenho um arquivo a:

aaa  bbb  ccc  DDD  
ads  zzz  caa  DDD  
aba  bab  cac  DAD  
aad  cca  cas  SFD  

e um arquivo b:

DDD  5  
DAD  13  
SFD  11

Eu quero adicionar uma quinta coluna para um arquivo baseado no arquivo b, ou seja, pesquisar o termo de column4 do arquivo a no arquivo b e adicionar uma quinta coluna ao arquivo a contendo o respectivo valor de column2 no arquivo b.

Você pode me ajudar?

    
por user30012 10.01.2013 / 16:01

1 resposta

2

join -o 1.1,1.2,1.3,1.4,2.2 -1 4 -2 1 <(sed '1d' file1 | sort -k4) <(sed '1d' file2 | sort)

sed '1d' é usado para retirar o cabeçalho (1 linha a partir do topo)

então nós juntamos o primeiro arquivo no campo 4 com o segundo arquivo no campo 1

os arquivos também devem ser classificados para junção para funcionar corretamente, então classificamos o arquivo1 no campo ao qual ele está associado

o -o é a ordem na qual imprimir a saída N.M (onde N = arquivo e M = campo)

    
por 10.01.2013 / 16:16