같은 줄에 두 파일을 병합하는 방법은 무엇입니까?

같은 줄에 두 파일을 병합하는 방법은 무엇입니까?

두 개의 파일이 있습니다.

파일 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  

그렇다면 쉘 스크립트에서 이 작업을 어떻게 수행할 수 있습니까?

답변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

이는 평일이 아닌 이름별로 정렬됩니다. 필요한 경우 평일별로 정렬하려면 후처리가 필요합니다.

관련 정보