バイオインフォマティクスでは、大量のデータを効率的に処理するためにLinuxのコマンドラインツールを活用することが不可欠です。特に、GNU coreutils に含まれる基本コマンドは、テキスト処理やデータ解析の効率を大幅に向上させます。
今回は、ファイルの行番号を付与する nl コマンドについて、その基本的な使い方を紹介します。
1. nl コマンドとは?
nl は、「Number lines」(行番号の付与) の略で、テキストファイルの各行に行番号を付けて表示するコマンドです。これは、大きなデータファイルを処理する際に特定の行を識別しやすくするために便利です。
1.1 基本的な使い方
nl の最も基本的な使い方は以下の通りです。
nl filename.txt
例えば、以下のような genes.txt というファイルがあるとします。
BRCA1
TP53
EGFR
MYC
このファイルに nl コマンドを適用すると、以下のような出力になります。
1 BRCA1
2 TP53
3 EGFR
4 MYC
このように、各行の先頭に番号が追加されます。
2. nl コマンドのオプション
2.1 行番号の書式を変更 (-w)
デフォルトでは、行番号の幅は6文字分で、右寄せになっていますが、-w オプションで幅を指定できます。
nl -w 3 genes.txt
1 BRCA1
2 TP53
3 EGFR
4 MYC
幅を 3 にすることで、余分なスペースが削減され、見やすくなります。
2.2 番号の開始値を指定 (-v)
-v オプションを使うと、行番号の開始値を変更できます。例えば、10から開始する場合は次のように指定します。
nl -v 10 genes.txt
10 BRCA1
11 TP53
12 EGFR
13 MYC
2.3 番号の増分を指定 (-i)
通常、行番号は 1 ずつ増加しますが、-i を使うと増分を変更できます。例えば、2ずつ増やす場合は次のようにします。
nl -i 2 genes.txt
1 BRCA1
3 TP53
5 EGFR
7 MYC
2.4 空行を無視して番号を付与 (-b a や -b t)
デフォルトでは、空行には番号が付与されません。もし、空行にも番号を振りたい場合は -b a を使います。
nl -b a genes_with_blank.txt
一方で、空行を完全に無視したい場合は -b t を使用します。
nl -b t genes_with_blank.txt
3. nl コマンドの応用
バイオインフォマティクスでは、大量のゲノムデータやシーケンスデータを処理する際に nl を活用できます。
3.1 FASTAファイルに行番号を付与
FASTA形式の配列データに行番号を付けることで、特定の配列を識別しやすくなります。
nl sequences.fasta
例えば、以下のような sequences.fasta があるとします。
>seq1
ATGCATGCATGC
>seq2
GCTAGCTAGCTA
>seq3
TTGGAATTCC
nl を適用すると、
1 >seq1
2 ATGCATGCATGC
3 >seq2
4 GCTAGCTAGCTA
5 >seq3
6 TTGGAATTCC
ただし、FASTAファイルではヘッダー (>seq1 など) のみに行番号を付けたい場合もあります。その場合、以下のように grep と組み合わせると、ヘッダー行にのみ行番号を付与できます。
grep '^>' sequences.fasta | nl
1 >seq1
2 >seq2
3 >seq3
3.2 CSVファイルのデータ整理
バイオインフォマティクスでは、遺伝子発現データやSNPデータをCSV形式で扱うことがよくあります。CSVファイルに行番号を追加して解析を容易にすることも可能です。
nl data.csv > numbered_data.csv
この方法を使うと、スクリプトやパイプラインで扱いやすい形式に変換できます。
3.3 シェルスクリプトでの利用
例えば、解析結果のファイルを nl で処理し、特定の行番号を含む行だけを抽出することも可能です。
nl results.txt | grep "BRCA1"
また、特定の範囲の行を抽出する場合は、awk などと組み合わせると便利です。
nl results.txt | awk '$1 >= 10 && $1 <= 20'
4. まとめ
nl コマンドは、一見シンプルなツールですが、バイオインフォマティクスにおいてはデータの整理や可視化に役立つ強力なコマンドです。特に、以下の点を押さえておくと、データ解析の効率が向上します。
-wで番号の幅を調整-vで開始番号を変更-iで増分を指定-b aや-b tで空行の処理を変更grepやawkとの組み合わせで柔軟なデータ操作
バイオインフォマティクスのワークフローに nl を取り入れることで、よりスムーズにデータを扱えるようになります!!
ぜひ活用してみてくださいね〜!
![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)

