Como mesclar dois arquivos na mesma linha?

1

Eu tenho dois arquivos.

arquivo1:

Dave 734.838.9800  
Bob 313.123.4567  
Carol 248.344.5576  
Mary 313.449.1390  
Ted 248.496.2204  
Alice 616.556.4458   

arquivo2:

Bob Tuesday  
Carol Monday  
Ted Sunday   
Alice Wednesday  
Dave Thursday    
Mary Saturday  

Eu quero mesclar esses dois no arquivo3.

file3 deve se parecer com:

Name      On-Call     Phone  
Carol     MONDAY      248.344.5576  
Bob       TUESDAY     313.123.4567  
Alice     WEDNESDAY   616.556.4458  
Dave      THURSDAY    734.838.9800  
Nobody    FRIDAY      634.296.3356  
Mary      SATURDAY    313.449.1390  
Ted       SUNDAY      248.496.2204  

Então, como posso fazer isso em um script de shell?

    
por billy klarr 19.04.2015 / 16:52

1 resposta

3

O utilitário join destina-se exatamente a esse tipo de problema: ele une dois arquivos com base em um de seus campos, por padrão, o primeiro. Os arquivos devem ser classificados primeiro; então

join <(sort file2) <(sort file1) | column -t

produz

Alice  Wednesday  616.556.4458
Bob    Tuesday    313.123.4567
Carol  Monday     248.344.5576
Dave   Thursday   734.838.9800
Mary   Saturday   313.449.1390
Ted    Sunday     248.496.2204

Isso é classificado por nome e não por dia da semana; você precisaria de algum pós-processamento para classificar por dia da semana, se necessário ...

    
por 19.04.2015 / 18:06