Linuxの基本コマンド:ファイル分割「split」の使い方

スポンサーリンク

バイオインフォマティクスでは、大量のデータを扱うことが日常的です。特に、ゲノムデータや配列データなどの巨大なファイルを処理する際、Linux の基本コマンドを駆使することで、データの管理や解析の効率が大幅に向上します。

本記事では、GNU coreutils に含まれる split コマンドについて、基本的な使い方を解説します。


1. split コマンドとは?

split コマンドは、ファイルを指定したサイズや行数ごとに分割するためのコマンドです。
巨大なファイルを扱う際、メモリの制約や並列処理のためにファイルを分割することは非常に重要です。

基本的な構文は以下の通りです:

split [オプション] [入力ファイル] [出力ファイルプレフィックス]

もし [入力ファイル] を省略すると、標準入力 (stdin) からデータを受け取って分割することも可能です。


2. 基本的な split の使い方

2.1 指定行数ごとに分割する

例えば、data.txt というファイルがあり、それを100行ごとに分割したい場合、以下のように実行します。

split -l 100 data.txt split_

このコマンドを実行すると、split_aa, split_ab, split_ac, … のように連番で分割ファイルが作成されます。

分割後のファイルの内容を確認するには、以下のようにします:

ls split_*

2.2 指定バイト数ごとに分割する

特定のバイトサイズでファイルを分割する場合、-b オプションを使います。

split -b 10M large_file.txt split_

この例では、large_file.txt10MBずつのファイルに分割します。

バイト数の指定には、以下のような単位を使用できます:

  • K(キロバイト) → -b 100K
  • M(メガバイト) → -b 10M
  • G(ギガバイト) → -b 1G

2.3 数字の連番で出力ファイルを作成する

デフォルトでは split はアルファベット (aa, ab, ac, …) を使ってファイル名を作成しますが、-d オプションを使うと数字 (00, 01, 02, …) で出力できます。

split -l 100 -d data.txt split_

この場合、生成されるファイルは split_00, split_01, split_02, … という形式になります。


3. 応用編:バイオインフォマティクスでの活用

バイオインフォマティクスでは、大規模なデータ処理が必要となる場面が多くあります。ここでは、split コマンドを活用する具体的な例を紹介します。

3.1 FASTA/Qファイルの分割

次世代シークエンシング(NGS)のデータ解析では、巨大な FASTAFASTQ ファイルを扱うことが一般的です。例えば、100万行の FASTQ ファイルを 250,000行ずつに分割する場合、以下のように実行できます。

split -l 250000 reads.fastq split_reads_

FASTQ ファイルは 4行で1リード(シーケンス) になっているため、4の倍数で分割しないとデータが壊れてしまいます。そこで、適切な行数を設定することが重要です。


3.2 並列処理のためのデータ分割

HPC(ハイパフォーマンスコンピューティング)環境では、巨大なファイルを分割して並列処理することで解析速度を向上できます。

例えば、シーケンスデータを4分割して、それぞれを別々のCPUコアで処理する場合:

split -n 4 -d large_dataset.txt part_

この場合、part_00, part_01, part_02, part_03 の4つのファイルが作成されます。
それぞれを別々のプロセスで処理すると、全体の処理時間を短縮できます。

並列実行の例:

for file in part_*; do
    some_analysis_tool $file &
done
wait

& を付けることで、複数のジョブを同時に実行できます。wait コマンドは全ジョブの完了を待機します。


3.3 ゲノムデータ(VCF)の分割

VCF(Variant Call Format)ファイルも大きくなることが多いため、split を使って処理することが可能です。たとえば、1万行ごとに分割する場合:

split -l 10000 variants.vcf split_vcf_

または、各染色体ごとに分割したい場合は、awk と組み合わせて使用できます。

awk '{ print > "chr"$1".vcf" }' variants.vcf

これは、1列目(染色体番号)に基づいて VCF ファイルを分割するシンプルな方法です。


4. まとめ

本記事では、split コマンドの基本からバイオインフォマティクスにおける応用例までを紹介しました。

ポイントをおさらいすると:

  • split -l行数 ごとの分割が可能
  • split -bバイトサイズ ごとの分割が可能
  • split -d数字の連番 で出力できる
  • split -nファイルを均等分割 できる
  • NGSデータやゲノム解析の高速化に 並列処理 との組み合わせが有効

バイオインフォマティクスでは大量のデータを効率よく処理することが求められます!!

split コマンドを活用し、処理の効率化を活かしたワークフローを構築してみてくださいね〜!

タイトルとURLをコピーしました