csplit이 001부터 시작하는 파일 이름으로 파일 출력을 시작하도록 하려면 어떻게 해야 합니까?

csplit이 001부터 시작하는 파일 이름으로 파일 출력을 시작하도록 하려면 어떻게 해야 합니까?

csplit을 사용하여 복잡한 파일을 file.docked.pdb더 작은 파일로 분할하고 있습니다.

csplit -k -s -n 3 -f file.docked. file.docked.pdb '/^ENDMDL/+1' '{'7'}'

man csplit다음 코드를 완벽하게 설명합니다

NAME
       csplit - split a file into sections determined by context lines


       -k, --keep-files
              do not remove output files on errors

      -s, --quiet, --silent
              do not print counts of output file sizes
      -n, --digits=DIGITS
              use specified number of digits instead of 2

       -f, --prefix=PREFIX
              use PREFIX instead of 'xx'

   Each PATTERN may be:


       /REGEXP/[OFFSET]
              copy up to but not including a matching line

       {*}    repeat the previous pattern as many times as possible

내 의심은 출력 파일의 이름이 지정되기 시작 file.docked.000하고 앞으로 확장된다는 것입니다.

에서 번호를 얻는 방법은 무엇입니까 file.docked.001? ? ? 시작?

도구가 이 기능을 전혀 지원하지 않는 경우 해결 방법을 제공해 주세요.

답변1

첫 번째 파일 출력 파일의 인덱스는 항상 0이며 시작 인덱스를 변경할 수 있는 옵션이 없습니다.

해결 방법으로 프로세스 대체를 사용하여 데이터를 출력하기 전에 패턴을 한 번 인쇄할 수 있습니다. 이렇게 하면 가상 라인이 file.docked.000나중에 삭제할 수 있는 파일로 분할됩니다. 또한 원하는 수의 출력 파일을 얻으려면 반복 패턴을 1씩 늘립니다.

csplit -k -s -n 3 -f file.docked. \
  <(echo "ENDMDL dummy, delete this file"; cat file.docked.pdb) '/^ENDMDL/+1' '{8}' &&
  rm file.docked.000

관련 정보