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

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

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

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를 삭제해야 합니다.

관련 정보