grepコマンドの使い方
grepコマンドは、ファイル内の文字を検索するときに使用します。
指定したファイルから条件に当てはまる行を検索する
grep [検索文字列] [ファイル名]
検索文字列に合致する行を抽出します。
正規表現を指定することもできます。
具体的な使い方は以下の通り。
$ cat hoge.txt
hoge
fuga
$ grep fuga hoge.txt
fuga
複数の条件に当てはまる行を検索する
grep [検索文字列1] ファイル名 | grep [検索文字列2]
複数の条件に当てはまる行を検索したい場合は、|(パイプライン)でつなぐことで実現可能です。
$cat hoge.txt
hogehoge
hoge
fuga
$ grep hoge hoge.txt | grep hogehoge
hogehoge
オプションと使い方一覧
-i:検索文字の大文字と小文字を区別しない
大文字小文字を区別せず、条件に一致した行を表示します。
$ cat hoge.txt
hogehoge
HOGEHOGE
HogeHoge
// hogehoge、HOGEHOGE、HogeHogeすべてが検索にかかる
$ grep -i hogehoge hoge.txt
hogehoge
HOGEHOGE
HogeHoge
-E:拡張正規表現で検索を行う
拡張正規表現で検索を行うことができます。
-e:一致処理に指定した正規表現を使う
一致処理に指定した正規表現を使うことができます。
また、つなげて使うことで複数の検索文字列で検索が可能です。
$ cat hoge.txt
hoge1
hoge2
hogehoge
fuga
$ grep -e hoge -e hogehoge
hoge1
hoge2
hogehoge
-v:一致しないものを検索する
検索条件に一致しない行だけを抜き出して表示します。
$ cat hoge.txt
hoge1
hoge2
fuga1
fuga2
// 「hoge」が含まれない行を検索する
$ grep -v hoge hoge.txt
fuga1
fuga2
// 「fuga」が含まれない行を検索する
$gerp -v fuga hoge.txt
hoge1
hoge2
-n:検索結果に行番号を表示する
検索結果に、行番号をつけて表示します。
指定の行が含まれている箇所を特定したいときに便利です。
$ cat hoge.txt
hoge1
hoge2
hoge3
hoge4
// 各行に行番号をつけて表示する
$ grep -n hoge hoge.txt
1:hoge1
2:hoge2
3:hoge3
4:hoge4
-l:検索結果にファイル名のみ表示する
$ cat hoge.txt
hoge
// 「hoge」が含まれるファイルのファイル名を表示する
$ grep -l hoge hoge.txt
hoge.txt
-h:検索結果にファイル名を表示しない
$ cat hoge.txt
hoge
// 検索結果にファイル名を表示しない
$ grep -h hoge hoge.txt
hoge
-o:検索結果に一致した文字を表示する
$ cat hoge.txt
hoge1
hoge2
hoge3
// 検索文字「hoge1」に一致した文字「hoge1」のみを表示する
$ grep -o hoge1 hoge.txt
hoge1
// 「hoge1」「hoge2」「hoge3」のうち、検索文字「hoge」に一致した文字のみを表示する
$grep -o hoge hoge.txt
hoge
hoge
hoge
-C:検索結果に一致した箇所から前後に指定した行数表示する
検索箇所の前後を合せて確認できます。
ログチェック時の前後処理の確認に使えますね。
$ cat hoge.txt
hoge1
hoge2
hoge3
hoge4
hoge5
hoge6
hoge7
hoge8
hoge9
hoge10
// 「hoge5」の前後3行ずつを合わせて表示する
$ grep -C3 hoge5 hoge.txt
hoge2
hoge3
hoge4
hoge5
hoge6
hoge7
hoge8
-r:ディレクトリ内も検索対象とする
$ ls
hogehoge
$ ls hogehoge
hoge1.txt hoge2.txt
$ cat hogehoge/hoge1.txt
hoge1
hoge2
hoge3
$ cat hogehoge/hoge2.txt
hoge4
hoge5
hoge6
// hogehogeフォルダ内の全てのファイルについて、検索文字「hoge」に一致する行が表示される
$ grep -r hoge hogehoge
// [ファイル名:検索結果]で表示される
hogehoge/hoge1.txt:hoge1
hogehoge/hoge1.txt:hoge2
hogehoge/hoge1.txt:hoge3
hogehoge/hoge2.txt:hoge4
hogehoge/hoge2.txt:hoge5
hogehoge/hoge2.txt:hoge6
// -hオプションを付けると、検索結果のみを表示できる
$ grep -rh hoge hogehoge
hoge1
hoge2
hoge3
hoge4
hoge5
hoge6
-L:検索した結果、該当しなかったファイルを表示する
$ ls
hogehoge
$ ls hogehoge
hoge1.txt hoge2.txt
$ cat hogehoge/hoge1.txt
hoge
$ cat hogehoge/hoge2.txt
fuga
// 検索文字「hoge」を含まないファイル「hoge2.txt」が表示される
$ grep -rL hoge hogehoge
hogehoge/hoge2.txt