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 \2 \3 | \1 \2 \3 | \1 \2 \3 |
[ ] | [ ] | [ ] |
¥{n, m¥} | ¥{n, m¥} | {n, m} |
¥{n, ¥} | ¥{n, ¥} | {n, } |
¥{n¥} | ¥{n¥} | {n} |
\+ | \+ | + |
\? | ? | |
\| | \| | | |