Code

【保存版】grepコマンドの使い方まとめ

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

-Code

© 2024 トンボのようにまっすぐ進んでいたい Powered by AFFINGER5