이 질문은 중복되지 않습니다. 여기서는 공통 값/행 집합이 동일한 분할 파일에 유지되는지(그리고 여러 분할 파일에 분산되지 않음) 확인해야 하기 때문입니다.
결국 해결책을 찾기 위해 인터넷 검색을 시도했지만 내 요구 사항에 맞는 솔루션을 찾지 못했습니다.
문제: 대용량 파일이 있고 크기가 2GB를 초과하는 경우 여러 파일로 분할해야 합니다. 이를 위해 레코드 카운팅을 사용할 계획입니다. 그런데 문제는 파일을 분할할 때 그룹 데이터가 분할되어서는 안 된다는 것입니다. 단일 파일로 보관해야 합니다.
전임자:
A,1,2,6/11/2018,X,Y,Z
A,2,2,6/11/2018,X,Y,B
A,3,2,6/11/2018,X,Y,Z
A,4,2,6/12/2018,X,Y,Z
B,1,2,6/11/2018,X,Y,Z
B,2,2,6/11/2018,X,Y,B
A,5,2,6/15/2018,X,C,Z
A,6,3,6/110/2018,A,Y,Z
C,3,2,6/11/2018,X,Y,Z
C,4,2,6/12/2018,X,Y,Z
C,5,2,6/15/2018,X,C,Z
D,6,3,6/110/2018,A,Y,Z
E,6,3,6/110/2018,A,Y,Z
E,6,3,6/110/2018,A,Y,Z
G,6,3,6/110/2018,A,Y,Z
위의 예에서 내 그룹 키가 첫 번째 열이라고 가정해 보겠습니다. 따라서 파일을 여러 파일로 분할하기로 결정하면(각 파일의 레코드 개수는 다음과 같이 잘립니다.7최대 레코드), 값이 "A"인 레코드가 여러 파일로 분할되는 것을 원하지 않습니다. 마찬가지로 "B", "C" 등의 기록은 하나의 파일로 보관해야 합니다. 그룹화된 모든 데이터는 동일한 분할 파일에 보관되어야 합니다. 위 예시에서는 총 3개의 파일이 생성됩니다. (단, 동일한 그룹 데이터는 하나의 분할 파일에 남아 있어야 합니다.)
위의 예에서는 다음과 같은 샘플 출력이 나와야 합니다.
작업 file_1
A,1,2,6/11/2018,X,Y,Z
A,2,2,6/11/2018,X,Y,B
A,3,2,6/11/2018,X,Y,Z
A,4,2,6/12/2018,X,Y,Z
A,5,2,6/15/2018,X,C,Z
A,6,3,6/110/2018,A,Y,Z
G,6,3,6/110/2018,A,Y,Z
작업 file_2
B,1,2,6/11/2018,X,Y,Z
B,2,2,6/11/2018,X,Y,B
C,3,2,6/11/2018,X,Y,Z
C,4,2,6/12/2018,X,Y,Z
C,5,2,6/15/2018,X,C,Z
E,6,3,6/110/2018,A,Y,Z
E,6,3,6/110/2018,A,Y,Z
작업 file_3
D,6,3,6/110/2018,A,Y,Z
답변1
$ awk -F, '{outfile="output."$1; print $0 > outfile}' input
$ ls
input output.A output.B output.C output.D