バイオインフォマティクスでは、大量のデータを扱うことが日常的です。特に、NGS(次世代シーケンス)の解析や遺伝子発現データの処理では、大規模なテキストファイル(FASTA、FASTQ、CSV、TSVなど)を効率的に確認・操作することが求められます。
Linux の基本コマンドのひとつである head
は、ファイルの先頭部分を素早く確認するのに便利なツールです。本記事では、GNU coreutils に含まれる head
コマンドの基本から応用までを詳しく解説します。
1. head コマンドとは?
head
コマンドは、ファイルの先頭部分を表示するためのLinuxコマンドです。デフォルトでは、先頭10行を出力します。
基本構文
head [オプション] [ファイル名]
使用例
- ファイル
sample.txt
の先頭10行を表示head sample.txt
-n
オプションで表示する行数を指定head -n 5 sample.txt
→ 先頭5行のみを表示- 標準入力からのデータにも適用可能
cat sample.txt | head -n 3
→sample.txt
の先頭3行を表示
2. head コマンドの応用
2.1 FASTA/FASTQ ファイルの確認
FASTA(塩基配列)やFASTQ(塩基配列+品質情報)ファイルは大容量になることが多く、全体を開かずに中身を確認したい場合に head
が役立ちます。
FASTA ファイルの先頭を確認
head -n 10 sample.fasta
出力例(FASTA形式):
>seq1
ATGCGTAGCTAGTACGATCGT
>seq2
GCTAGCTAGCTAGCTAGCTA
このように、配列の一部を素早く確認できます。
FASTQ ファイルの先頭を確認
head -n 8 sample.fastq
出力例(FASTQ形式):
@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCG
+
!''*((((***+))%%%++)(%%%%
@SEQ_ID2
AGCTTAGCTAGCTAGCTAGCTAGC
FASTQ形式では、1リードが4行で構成されているため、-n 8
で2つのリードを確認できます。
2.2 複数ファイルの先頭を同時に確認
複数のファイルの先頭を確認したい場合は、ファイル名を並べて指定します。
head -n 5 sample1.txt sample2.txt
出力例:
==> sample1.txt <==
line1
line2
line3
line4
line5
==> sample2.txt <==
line1
line2
line3
line4
line5
ファイル名ごとに分けて表示されるため、比較が容易になります。
2.3 find コマンドと組み合わせて大量のファイルを一括処理
例えば、data/
ディレクトリ内の .fasta
ファイルの先頭5行をすべて表示するには、以下のように find
と xargs
を組み合わせます。
find data/ -name "*.fasta" | xargs head -n 5
ファイルが大量にある場合は、-print0
と xargs -0
を用いると、安全に処理できます。
find data/ -name "*.fasta" -print0 | xargs -0 head -n 5
2.4 awk や sed との組み合わせ
データのフィルタリングや加工と組み合わせることで、より高度な処理が可能になります。
例1:awk で特定カラムを表示(TSVファイルの場合)
head -n 10 data.tsv | awk -F"\t" '{print $1, $3}'
→ 先頭10行の1列目と3列目を表示
例2:sed で特定パターンを置換
head -n 10 data.txt | sed 's/foo/bar/g'
→ 先頭10行の中の “foo” を “bar” に置換
2.5 watch と組み合わせてリアルタイムで監視
バイオインフォマティクスの解析では、ログファイルの更新をリアルタイムで確認することが求められることがあります。
watch -n 1 head -n 10 log.txt
→ log.txt
の先頭10行を1秒ごとに更新して表示
3. head コマンドの制約と注意点
- 巨大ファイルへの適用
head
はファイルの先頭部分のみを読み込むため、数GB以上の巨大なファイルでも高速に動作します。- ただし、ディスク I/O の制約により速度が低下することがあるので、SSD環境を推奨します。
- UTF-8エンコーディングの考慮
head
はバイト単位のカウントを行うため、UTF-8 のマルチバイト文字を扱う際は注意が必要です。-c
オプションを使うと、指定バイト数だけ出力できるが、文字が途中で切れる可能性あり。
head -c 100 sample.txt
→ 先頭100バイトを表示(ただし、日本語が途中で切れる可能性あり) - 行数とバイト数の指定の違い
-n
オプションは「行数」-c
オプションは「バイト数」- 日本語などのマルチバイト文字を含むファイルでは、
-n
を使用する方が安全
まとめ
head
コマンドは、バイオインフォマティクスにおけるデータ確認・解析の基本ツールとして非常に役立ちます。特に、NGS解析やデータ前処理の場面で、テキストデータの内容を素早く確認するのに有効です。
本記事では、基本的な使い方から応用例として、FASTA/FASTQファイルの確認、複数ファイルの処理、find
や awk
との組み合わせ、ログ監視などを紹介しました。
Linuxの基本コマンドを活用し、効率的なデータ解析を進めていきましょう!