동일한 파일의 여러 열을 병합하는 방법은 무엇입니까?

동일한 파일의 여러 열을 병합하는 방법은 무엇입니까?

아래와 같이 세 개의 파일이 있습니다.

FILE 1: 
DATE      PGTO_CRED
20180801    50.00
20180802    150.00
20180803    130.00
20180804    110.00
20180805    200.00

FILE 2: 
DATE       PGTO_TOTAL
20180801    150.00
20180802    300.00
20180803    200.00
20180804    250.00
20180805    400.00

FILE 3: 
DATE       PGTO_FEE
20180801    35.00
20180802    10.00
20180803    25.00
20180804    140.00
20180805    135.00

다음과 같은 출력 파일이 필요합니다.

DATE    PGTO_CRED   PGTO_TOTAL  PGTO_FEE
20180801    50.00   150.00      35.00
20180802    150.00  300.00      10.00
20180803    130.00  200.00      25.00
20180804    110.00  250.00      140.00
20180805    200.00  400.00      135.00

Redhat Linux에서 이 작업을 수행하는 방법은 무엇입니까?

답변1

많은 도구가 이 작업을 수행할 수 있습니다. 아마도 awk가장 먼저 떠오르는 도구일 것입니다. 그러나 join특히 입력이 이미 정렬되어 있는 경우(예제에서처럼) 이 명령을 권장합니다.

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

이는 column -t출력을 멋지게 정렬하기 위한 것이므로 제거할 수 있습니다.

산출:

DATE      PGTO_CRED  PGTO_TOTAL  PGTO_FEE
20180801  50.00      150.00      35.00
20180802  150.00     300.00      10.00
20180803  130.00     200.00      25.00
20180804  110.00     250.00      140.00
20180805  200.00     400.00      135.00

답변2

몇 가지 다른 옵션:

paste file{1,2,3} | awk '{print $1,$2,$4,$6}' | column -t

아니면 그냥 어이:

awk '
    NR == FNR {line[FNR] = $0; next} 
              {line[FNR] = line[FNR] OFS $2} 
    END       {for (i=1; i<=FNR; i++) print line[i]}
' file{1,2,3} | column -t

관련 정보