如何合并同一行中的两个文件?

如何合并同一行中的两个文件?

我有两个文件。

文件1:

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

文件2:

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

我想将这两个合并到 file3 中。

file3 应该是这样的:

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  

那么我怎样才能在 shell 脚本中做到这一点呢?

答案1

join实用程序正是针对此类问题:它根据两个文件的一个字段(默认情况下是第一个字段)连接两个文件。文件应先排序;所以

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

产生

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

这是按名称而不是按工作日排序的;如果需要的话,你需要一些后处理来按工作日排序......

相关内容