同じ行に2つのファイルをマージする方法は?

同じ行に2つのファイルをマージする方法は?

2つのファイルがあります。

ファイル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  

これら2つを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  

それでは、シェルスクリプトでこれをどのように実行できますか?

ベストアンサー1

このjoinユーティリティはまさにこの種の問題のために設計されています。つまり、これらのフィールドの1つ(デフォルトでは最初のフィールド)に基づいて2つのファイルを結合します。ファイルを最初にソートする必要があります。

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

これは平日ではなく名前でソートされます。必要に応じて平日でソートするには後処理が必要です。

おすすめ記事