나는 시도했다:
awk '{if (last != $1) close(last); print > $1; last = $1}' file
awk -F$'\t' '{ print > ($1) }' file
awk '{if (last != $1) close(last); print >> $1; last = $1}' file
매우 큰 텍스트 파일(33GB)을 첫 번째 열의 이름이 지정된 여러 파일로 분할합니다.
작은 파일의 경우 모든 것이 잘 작동하지만 큰 파일의 경우 awk
열 유형(명령 1 및 2)의 끝 부분에서 중지되거나 "."이 포함된 열에 줄 바꿈 문자를 입력하는 것을 잊어버립니다. 그 안에 (명령 3).
예: "10" 유형의 열의 실제 끝에 도달하기 전에 중지됩니다.
10 69331427 1
10 69331428 1
10 69331429 1
10 69331430 1
10 69331431 1
10
편집: 파일을 닫으면 도움이 되는 것 같습니다.
'{print >> $1; close($1)}'
GNU Awk 4.1.4, API: 1.1(GNU MPFR 4.0.1, GNU MP 6.1.2)
답변1
"매우 큰 텍스트 파일(33GB)을 첫 번째 열로 명명된 여러 파일로 분할합니다." 모든 UNIX 시스템에서 GNU awk를 사용하는 방법은 다음과 같습니다.
awk '{print > $1}' file
그게 다야. 문제가 발생하는 경우 awk 명령이 아닌 다른 원인으로 인해 발생할 수 있습니다. 예를 들어 드라이브에 공간이 부족하거나 입력 파일에 이상한 제어 문자가 포함되어 있을 수 있습니다.
awk stops near the end of column type
나는 당신이 무슨 말을 하는지 모르겠고 forgets to input newline characters for columns that have "." in them
, 그렇지도 않습니다 it just stops before reaching real end of column of type "10"
. 이는 부분적으로 "열 유형"이 귀하에게 의미하는 바를 나타내는 질문이 없기 때문일 수 있습니다.