Une dois arquivos mantendo a ordem dos elementos de um deles

2

Eu tenho dois arquivos

Arquivo1

03873
03872
03871
03870
......

Arquivo2

00001    0.867
00002    0.855
00003    0.864
00004    0.855
...
03870    0.825
03871    0.852
03872    0.326
03873    0.852

Eu quero acrescentar os valores na coluna II de File 2 em File 1 , mantendo a ordem do elemento que File 1 tem.

File3

03873    0.852
03872    0.326
03871    0.852
03870    0.825
......

Eu poderia fazer isso com join , mas não quero classificar File 1 . Eu pensei em usar awk

awk -F "\t" 'FNR==NR{a[$1]=$0; next}$1 in a {print a[$1]"\t"$2}' File1  File2 

Mas também neste caso eu recebo os dados classificados. Alguma ideia de como fazer isso?

    
por efrem 30.03.2015 / 18:57

1 resposta

4

Seu awk não está classificando. A saída é impressa na ordem em que é encontrada em file2 e que é classificada. Para manter o pedido encontrado em file1 , basta invertê-lo (eu também removi o a[$1]"\t"$2 desnecessário, você já estava salvando $0 em a ):

$ awk -F "\t" 'FNR==NR{a[$1]=$0; next}$1 in a {print a[$1]}' file2 file1 
03873   0.852   
03872   0.326   
03871   0.852   
03870   0.825   
    
por terdon 30.03.2015 / 19:41