텍스트 파일을 새 파일로 분할하는 방법

텍스트 파일을 새 파일로 분할하는 방법

다음 형식의 텍스트 파일이 있습니다.

001|fileA
002|fileA
003|fileA
004|fileB
005|fileB
006|fileC
.
.
.
xxx|fileX

이 파일을 각 "|"에 해당하는 파일로 분할해야 합니다. fileA ,fileB,fileC...fileX 와 같은 새 파일의 이름입니다.

답변1

노력하다

 awk -F\| '{ print $1 > $2 ; }' file

어디

  • -F\|awk에게 구분 기호로 사용하라고 지시하세요 |. | 탈출해야합니다.
  • > $2$2인쇄 를 의 값 으로 리디렉션합니다 .

파일이 많은 경우(> 10):

for x in $(awk -F\| '!a[$2]++ { print $2}' file)
do
    awk -F\| -v f="$x" '$2 == f { print $1}' file > "$x"
done
  • 첫 번째 awk는 단지 uniq 파일 이름을 나열합니다.
  • 52개의 파일은 괜찮습니다. 수백 개의 파일이 있으면 속도가 느려질 수 있습니다.

또 다른 대안은 제공된 필드가 셸에 넣어도 "안전"하다는 것입니다.

awk -F\| '{printf "echo %s >> %s\n",$1,$2;}' file | bash
  • 재실행할 경우를 대비해 반드시 먼저 fileX를 삭제하시기 바랍니다.

관련 정보