正規表現を利用したテキストのパターン抽出
grep
grep
は文字列から指定したパターンにマッチングした部分を抽出するコマンドである。パターンマッチングには正規表現も利用でき、非常に強力である。
基本の使い方として、grep
コマンドに続いて、オプション、パターン、およびパターンマッチングを行う入力ファイル名を書く。
grep [options] "pattern" filename.txt
grep のオプション
オプション | 機能 |
-c | 指定したパターンにマッチした行数を出力 |
-h | ファイル名を先頭に付ける |
-i | 大文字と小文字を区別しない |
-l | ファイル名のみを出力する |
-n | マッチした行の行番号を出力する |
-s | エラーを表示しない |
-v | パターンにマッチした行以外を出力する |
-w | パターンを単語としてマッチ |
grep の使い方
マッチングした行を出力する
sample.fa ファイル中に文字列 NM_ を含む行を検索し、マッチングすればそれを出力する。
grep "NM_" sample.fa
sample.fa ファイル中に文字列 NM_ または nm_ を含む行を検索する場合は、大文字・小文字を区別しないオプション i
を利用する。
grep -i "NM_" sample.fa
grep
でマッチングした行が画面上に出力される際に、パソコンの設定によるが、マッチングした部分がハイライトされたり、されなかったりする場合がある。マッチングした部分を明示的にハイライトさせたい場合は、--color
オプションを付ける。
grep --color=always "NM_" sample.fa
マッチングしなかった行を出力する
指定したパターンにマッチングしなかった行を出力させるには、-v
オプションを利用する。
grep -v "NM_" sample.fa
マッチングした行の行番号を出力する
NM_ にマッピングした場合、それが何行目なのかを出力させる場合は -n
を利用する。
grep -n "NM_" sample.fa
マッチングした行の数を出力する
NM_ にマッピングした行は何行あるかを調べる場合は -c
を利用する。
grep -c "NM_" sample.fa
正規表現を利用してマッチングを行う
grep
コマンドの検索パターンに正規表現を用いることも可能である。正規表現を利用する場合、grep -E
のようにオプションをつけて明示するとよい。
各行の先頭に「>」記号が付いている行を出力する場合は、^
を利用して行の先頭であることを明示する。
grep -E "^>" sample.fa
各行の終わりが「mRNA」となっている行を出力する場合は、$
を利用して行の終わりであることを明示する。
grep -E "mRNA$" sample.fa
NM_00001、NM_00002、NM_00003、NM_00004 および NM_00005 の 5 パターンにマッチングさせたい場合は以下のようにする。
grep -E vi"NM_0000[1-5]" sample.fa
OR マッチングする場合は正規表現の |
を利用する。例えば、miRNA または circRNA を含む行をマッチングする場合は次のようにすることができる。
grep -E "miRNA|circRNA" sample.fa
grep で利用できる正規表現
grep
コマンドはほとんどの正規表現を利用することができる。grep
の正規表現の記述方法は、ほかのスクリプト言語の正規表現はやや異なっている。
grep | sed | awk | 意味 |
. | . | . | 任意の 1 文字 |
* | * | * | 直前の 1 文字または 1 パターンの 0 回以上の繰り返し |
^ | ^ | ^ | 行の先頭 |
$ | $ | $ | 行の末尾 |
\( \) | \( \) | ( ) | パターンのグループ化 |
\1 \2 \3 | \1 \2 \3 | 後方参照 | |
[ ] | [ ] | [ ] | 括弧内の任意の 1 文字 |
\{n, m\} | \{n, \} | {n, m} | 直前の 1 文字または 1 パターンの n 回以上かつ m 回以下の繰り返し |
\{n, \} | \{n, \} | {n, } | 直前の 1 文字または 1 パターンの n 回以上の繰り返し |
\{n\} | \{n\} | {n} | 直前の 1 文字または 1 パターンの n 回の繰り返し |
\+ | \+ | + | 直前の 1 文字あるいは 1 パターンの 1 回以上の繰り返し |
\? | ? | 直前の 1 文字あるいは 1 パターンの 0 回または 1 回だけ出現 | |
\| | \| | | | 2 パターンのうちどちら片方 |