Linuxの基本コマンド ファイルの先頭を表示「head」 コマンドの使い方

スポンサーリンク

バイオインフォマティクスでは、大量のデータを扱うことが日常的です。特に、NGS(次世代シーケンス)の解析や遺伝子発現データの処理では、大規模なテキストファイル(FASTA、FASTQ、CSV、TSVなど)を効率的に確認・操作することが求められます。

Linux の基本コマンドのひとつである head は、ファイルの先頭部分を素早く確認するのに便利なツールです。本記事では、GNU coreutils に含まれる head コマンドの基本から応用までを詳しく解説します。

1. head コマンドとは?

head コマンドは、ファイルの先頭部分を表示するためのLinuxコマンドです。デフォルトでは、先頭10行を出力します。

基本構文

head [オプション] [ファイル名]

使用例

  1. ファイル sample.txt の先頭10行を表示 head sample.txt
  2. -n オプションで表示する行数を指定 head -n 5 sample.txt → 先頭5行のみを表示
  3. 標準入力からのデータにも適用可能 cat sample.txt | head -n 3sample.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行をすべて表示するには、以下のように findxargs を組み合わせます。

find data/ -name "*.fasta" | xargs head -n 5

ファイルが大量にある場合は、-print0xargs -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 コマンドの制約と注意点

  1. 巨大ファイルへの適用
    • head はファイルの先頭部分のみを読み込むため、数GB以上の巨大なファイルでも高速に動作します。
    • ただし、ディスク I/O の制約により速度が低下することがあるので、SSD環境を推奨します。
  2. UTF-8エンコーディングの考慮
    • head はバイト単位のカウントを行うため、UTF-8 のマルチバイト文字を扱う際は注意が必要です。
    • -c オプションを使うと、指定バイト数だけ出力できるが、文字が途中で切れる可能性あり。
    head -c 100 sample.txt → 先頭100バイトを表示(ただし、日本語が途中で切れる可能性あり)
  3. 行数とバイト数の指定の違い
    • -n オプションは「行数」
    • -c オプションは「バイト数」
    • 日本語などのマルチバイト文字を含むファイルでは、-n を使用する方が安全

まとめ

head コマンドは、バイオインフォマティクスにおけるデータ確認・解析の基本ツールとして非常に役立ちます。特に、NGS解析やデータ前処理の場面で、テキストデータの内容を素早く確認するのに有効です。

本記事では、基本的な使い方から応用例として、FASTA/FASTQファイルの確認、複数ファイルの処理、findawk との組み合わせ、ログ監視などを紹介しました。

Linuxの基本コマンドを活用し、効率的なデータ解析を進めていきましょう!

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