【Linux】grepコマンド一覧!基本操作やオプションでの検索方法を解説
LinuxなどのOSで利用可能なファイル内の文字列で正規表現での検索が可能なものにgrepがあります。Linuxで利用可能なgrepのコマンドの基本的な使い方やオプションを利用した検索方法なども含め、利用できるコマンドを紹介していきます。
【Linux】grepコマンドの基本操作
パソコンを動かすOSにはいろいろなものがありますが、そのうちの1つがLinuxです。Macと同じUNIX系のOSです。
grepコマンドとは?
そんなLinuxで利用することができるコマンドの1つに「grep」というものがあります。
ファイル中の文字列に対して正規表現を使って検索し表示するLinuxコマンド
Linuxのgrepとは、ファイルの中にある文字列に対し、正規表現を利用して検索し、その結果を表示するために利用するコマンドです。Linuxと同じくUNIX系のOSであるMacでもgrepコマンドを利用することができます。
ファイルから特定の「文字列(文字のパターン)」が存在するかを調べたいときに利用される
Linuxのgrepコマンドがどういった際に使われるのかというと、ファイル内にある特定の文字列(文字のパターンと呼ばれる)が存在しているかどうかを検索したいときに利用されます。
grepコマンドで条件指定さえすれば、LinuxOSが入ったパソコン内にある複数ファイルに渡るgrep検索も可能です。条件を複数指定することも可能です。
流れを簡単に説明すると、特定のファイルの中に「テスト」という文字を含むものは存在するのか、という点をコマンドで検索し、それがあれば結果として表示する、という形でgrep検索がおこなわれます。
grepコマンドの使い方
そんなgrepコマンドは、便利なことからLinuxユーザーで利用している人も少なくありません。ここからはLinuxでのgrepコマンドの使い方を紹介していきます。
1つのファイルから「文字列」を検索する方法
1つのファイルから特定の文字列を検索したい場合、Linuxのgrepでは次のようなコマンドを利用します。下記のgrepコマンドの例の場合、「sample.css」というファイルの中の「テスト」を含む文字列をgrepコマンドで検索するという条件が指定されています。
$ grep テスト sample.css |
複数のファイルから「文字列」を検索する方法
複数ファイルから特定の文字列を検索する場合、検索したい対象のファイル名をスペースを開けて指定します。下記のgrepコマンドの例の場合、「サンプル.css」と「Sample.css」のファイルの中から「test」を含む文字列を検索するという条件が指定されています。
$ grep "test" サンプル.css Sample.css |
and/なおかつ検索する方法
and検索(なおかつ検索)をLinuxのgrepコマンドで検索したい場合は、パイプ(|)を利用してgrepをつなぐことで可能です。下記のgrepコマンドの場合、「テスト」を含みなおかつ「test」を含む文字列を「サンプル.css」の中から検索するという条件です。
$ grep テスト サンプル.css | grep test |
1文で「なおかつ検索」をしたい場合は「.*」で区切って下記のように検索します。下記のgrepコマンドの場合は1文の中に「テスト」を含みなおかつ「test」を含む文字列を検索するという条件です。結果は上記の|を利用した「なおかつ検索」の場合と同じです。
$ grep テスト.*test サンプル.css |
grepコマンドの主なオプション
さて、Linuxでgrepコマンドを利用するにあたり、「オプション」というものを利用して更にいろいろな検索ができます。grepでよく利用されるオプションは複数存在しますので、その中でもLinuxでgrep検索を利用する際に主だったものを紹介します。
一致しないものを検索
Linuxのgrepで、入力している条件に一致しない(特定の文字列を含まない)ものを検索する場合、利用するオプションは「-v」です。下記のgrepコマンドの場合は「サンプル.css」ファイルで「sa」を含まない行を検索します。
$ grep -v sa サンプル.css |
大文字/小文字を区別せず検索
英字には大文字・小文字がありますが、この大文字小文字を区別しセず検索したい場合も少なくありません。大文字小文字を区別せずLinuxのgrepコマンドを利用したい場合は「-i」オプションを利用します。
下記のgrepコマンドの場合、「inu」に該当するものだけでなく、大文字小文字の配置が違う「Inu」や「iNu」なども検索されます。大文字小文字の区別ありがgrepでのデフォルトです。
$ grep -i inu サンプル.css |
一致処理に指定した正規表現を使う
Linuxのgrepでor/もしくは検索をしたい場合に利用するのが「-e」コマンドです。orの場合はなおかつ検索の場合より少々複雑ですが、さほど難しくありません。
grepのオプションである「-e」は一致処理に指定した正規表現を使う、パターンマッチングを調べるオプションで、これを使ってor検索する場合は下記のように活用します。
下記のgrepコマンドの条件だと「サンプル.css」のファイルの中で「sa」or「te」を含む文字列があるかどうかの検索をしています。
$ grep -e sa -e te サンプル.css |
grepでのor検索は、「-E」オプションを利用する方法もあります。orで検索したいものは|(パイプ)を利用して下記のように条件指定します。
|はAND検索の場合と違う意味で使われており、これは「or(または)」を示しています。条件は上記のgrepコマンドのものと同じです。
$ grep -E "sa|te" サンプル.css |
grepコマンド一覧
その他にもLinuxのgrepには複数のコマンドやオプションがあるため、利用例も含め一覧という形で紹介していきます。
grepコマンドのオプション一覧 | |||
---|---|---|---|
オプション | grepのオプションの内容 | grepコマンド使用例 | |
-i | 大文字・小文字の区別なしで検索 | $ grep -i inu サンプル.css | |
-e | 一致処理に指定した正規表現を利用し検索 | $ grep -e sa -e te サンプル.css | |
-E | 拡張正規表現での検索 | $ grep -E "sa|te" サンプル.css | |
-v | 一致しないものを検索 | $ grep -v sa サンプル.css | |
-n | 検索結果に行番号を表示 | $ grep -n -B 3 -A 5 サンプル.css | |
-A | 一致した文字列の後ろの行を表示 (行数を数字で指定) |
$ grep -A 3 サンプル.css (後ろの3行を表示) |
|
-B | 一致した文字列の前の行を表示 (行数を数字で指定) |
$ grep -B 2 サンプル.css (前の2行を表示) |
|
-C | 一致した文字列の前後の行を表示 (行数を数字で指定) |
$ grep -C 2 サンプル.css (前後2行を表示) |
|
-h | 検索結果にファイル名を表示しない | $ grep -h -i inu サンプル.css | |
-o | 検索結果に一致した文字だけを表示 | $ grep -o -i inu サンプル.css | |
-l ※小文字のL |
検索結果にファイル名だけを表示 | $ grep -l -i inu サンプル.css | |
-L | 検索条件を含まないファイル名を表示 | $ grep -L -i inu サンプル.css | |
-b | 検索条件が何文字目にあるかを表示 | $ grep -b -i inu サンプル.css | |
-s | エラーメッセージを非表示にする | $ grep -s -B 3 -A 5 サンプル.css |
最後に
Linuxで利用できるgrepコマンドは、正規表現での検索を複数の条件を指定しながらファイル中の文字の検索をすることができます。
and検索やor検索以外にも大文字小文字の区別などができるgrepコマンドのオプションなどもあり、ここで紹介したgrepコマンドのオプション以外にもいろいろなものがあります。
ここで説明はしきれていませんが、色々なオプションを組み合わせながら任意の文字列を検索できるよう参考にしつつ使ってみてください。