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

おすすめ記事