아래와 같이 세 개의 파일이 있습니다.
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