파일의 각 줄은 새 파일로 변환됩니다.

파일의 각 줄은 새 파일로 변환됩니다.

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}'

관련 정보