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 の正規表現の記述方法は、ほかのスクリプト言語の正規表現はやや異なっている。

grepsedawk
...
***
^^^
$$<$<
¥( ¥)¥( ¥)( )
\1 \2 \3\1 \2 \3\1 \2 \3
[ ][ ][ ]
¥{n, m¥}¥{n, m¥}{n, m}
¥{n, ¥}¥{n, ¥}{n, }
¥{n¥}¥{n¥}{n}
\+\++
\??
\|\||