如何让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,您可以稍后删除该文件。还将重复模式增加一以获得所需的输出文件数量。

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

相关内容