![동일한 파일의 여러 열을 병합하는 방법은 무엇입니까?](https://linux55.com/image/140020/%EB%8F%99%EC%9D%BC%ED%95%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%97%AC%EB%9F%AC%20%EC%97%B4%EC%9D%84%20%EB%B3%91%ED%95%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
아래와 같이 세 개의 파일이 있습니다.
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