4개의 열과 5000개의 행이 있는 파일이 있습니다. 각 파일이 원본 파일의 행을 갖도록 이 파일에서 5000개의 새 파일을 만들고 싶습니다. 또한 네 번째 열의 값을 기반으로 새 파일의 이름을 지정하고 싶습니다. 예: 다음 파일(XXXX.txt)에는 4개의 라인이 있습니다.
파일:XXXX.txt
1 315 4567 G1
1 212 345 G2
2 315 25674 G3
3 12 235673 G4
새 파일이 예상됩니다.
파일: G1
1 315 4567 G1
파일: G2
1 212 345 G2
파일: G3
2 315 25674 G3
파일:G4
3 12 235673 G4
나는 다음 명령을 시도했습니다.
awk '{print > $0}' < XXXX.txt
이 명령은 필요에 따라 새 파일을 생성하지만 원본 파일의 열 4를 기반으로 새 파일의 이름을 지정할 수는 없습니다.
답변1
awk
스크립트를 약간 변경해 볼 수 있습니다 .
awk '{print > $4}' XXXX.txt
그러나 소스 파일에 다른 행과 동일한 네 번째 열이 있는 행이 있는 경우 최종 파일에는 마지막 행만 포함됩니다. 이를 방지하려면 다음과 같이 시도해 보세요.
awk '{print >> $4}' XXXX.txt
참고: 레코드가 두 번 추가되므로 이 작업을 두 번 이상 실행하지 마십시오.
"열린 파일이 너무 많습니다" 오류가 발생하는 경우 다음과 같은 스크립트를 사용하여 출력 파일을 명시적으로 닫을 수 있습니다.
awk '{print >> $4;close($4)}' XXXX.txt
답변2
당신은 조금 가깝습니다.
awk '{print > $0}'
와 동일하며 awk '{print $0 > $0}'
이해하기 쉽습니다.
전체 줄($0) 대신 원하는 네 번째 열($4)이라는 파일에 한 줄을 인쇄하면 정확합니다.
awk '{print $0 > $4}'