Linux基本コマンド:テキスト整形「fold」 の使い方

スポンサーリンク

バイオインフォマティクスでは、大量のテキストデータ(DNA配列、タンパク質データ、ゲノムアノテーションなど)を扱うことが多く、Linuxの基本コマンドを使いこなすことが非常に重要です。

今回は、GNU coreutils に含まれる fold コマンドに焦点を当て、その基本的な使い方とバイオインフォマティクスにおける応用例について解説します。


1. fold コマンドの基本

fold は、長い行のテキストを指定した幅で折り返す(改行を挿入する)コマンドです。デフォルトでは、80文字ごとに改行が挿入されます。

1.1 基本的な構文

fold [オプション] [ファイル]

もしファイルを指定しなければ、標準入力(stdin)からデータを受け取ることができます。

1.2 fold の基本的な使用例

80文字ごとに改行(デフォルト動作)

echo "This is a long line that needs to be wrapped at a certain width." | fold

任意の幅(例えば50文字)で改行

echo "This is a long line that needs to be wrapped at a certain width." | fold -w 50

出力:

This is a long line that needs to be wrapped at a c
ertain width.

スペースを考慮して改行(単語を切らない)

echo "This is a long line that needs to be wrapped at a certain width." | fold -w 50 -s

出力:

This is a long line that needs to be wrapped at a
certain width.

オプション -s を指定すると、単語の途中で折り返さず、スペース(空白)で区切られるようになります。


2. fold の応用(バイオインフォマティクス向け)

バイオインフォマティクスでは、DNAやタンパク質配列などの長い文字列データを扱うことが多く、fold は特にFASTAファイルのフォーマット調整に役立ちます。

2.1 FASTA ファイルの整形

FASTAフォーマットでは、配列データが一行に長く記載されている場合がありますが、標準的なフォーマットでは60文字ごとに改行することが推奨されています。これを fold を使って調整できます。

例:FASTAファイルの整形

入力ファイル (sequence.fasta)

>sequence1
AGCTTGACTGATCGTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC

コマンド

fold -w 60 sequence.fasta > formatted_sequence.fasta

出力 (formatted_sequence.fasta)

>sequence1
AGCTTGACTGATCGTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC

この方法で、配列部分のみ60文字ごとに改行され、FASTAフォーマットに適した形になります。

2.2 RNA・タンパク質配列のフォーマット調整

FASTAだけでなく、RNA配列やタンパク質配列でも fold を活用できます。

例:RNA配列の整形

echo "AUGGCCUUUUUAGCGAUGGGAUUUUCCGAAAGGGAUUUUUCCCGGA" | fold -w 10

出力

AUGGCCUUUU
UAGCGAUGGG
AUUUUCCGAA
AGGGAUUUUU
CCCGGA

このように、視認性を向上させることができます。


3. fold の組み合わせ技

Linuxのパワフルな点は、複数のコマンドを組み合わせてより便利な処理ができることです。

3.1 fold + grep で特定の配列を検索

例えば、改行のある配列データの中から特定の配列(AGCTAG)を含む行を抽出する場合:

fold -w 60 sequence.fasta | grep "AGCTAG"

この方法で、配列を適切な幅に整形した上で、特定の配列を検索することが可能になります。

3.2 fold + awk でカスタムフォーマット

例えば、配列データを整形しつつ行番号を追加する場合:

fold -w 60 sequence.fasta | awk '{print NR, $0}'

出力

1 >sequence1
2 AGCTTGACTGATCGTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC
3 TAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC

このように、行番号を付与することで管理しやすくなります。


4. fold の制約と代替コマンド

4.1 fold の制約

  • fold はバイト単位で処理を行うため、マルチバイト文字(日本語など)を含む場合は正しく動作しないことがあります。
  • 改行を挿入するだけの単純な機能なので、より高度なフォーマット変換には awksed を組み合わせる必要があります。

4.2 fold の代替コマンド

  • fmt: fold と似ているが、単語ごとに改行を挿入し、より柔軟なテキスト整形が可能
  • awk: より高度なテキスト処理を行う場合に有用
  • sed: 文字列置換や整形に適している

例えば、fmt を使って 50 文字ごとに単語単位で改行する場合:

fmt -w 50 sequence.fasta

5. まとめ

fold は単純ながらも、バイオインフォマティクスにおいて長い配列データを整形するのに便利なコマンドです。特に以下の用途で活躍します:

  • FASTAファイルのフォーマット調整
  • RNA・タンパク質配列の整形
  • grep や awk との組み合わせによるデータ解析

また、fmtawk などの他のコマンドと併用することで、より柔軟なテキスト処理が可能になりますよ〜!!

Linuxの基本コマンドを活用し、より効率的にバイオインフォマティクスのデータ解析を進めていきましょう〜!

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