grepのよく使うオプションまとめ | 瀬戸内の雲のように

grepのよく使うオプションまとめ

Posted: 2018-06-07


スポンサーリンク

目次

背景

linuxで最も使うコマンドの一つがgrepです。特にサーバの運用者はログを見たり設定ファイルのチェックをしたりする時に、息をするように使っているかと思います。ということで今回はよく使うオプションをメモしておきたいと思います。

大前提: grepとは

linuxのコマンドの一つで、文字列を検索するために使うコマンドです。検索元は標準入力やファイルが指定可能です。
ちなみに"grep"という名称の由来は「global regular expression print」の略だそうです。

よく使うオプションの紹介

今回は以下のようなファイルを例にオプションをご紹介します。

# cat grep.txt
1. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2. bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3. cccccccccccccccccccccccccccccc
4. dddddddddddddddddddddddddddddd
5. eeeeeeeeeeeeeeeeeeeeeeeeeeeeee

 

1. 一致した行の前後も一緒に表示する(-A, -B -数字)

通常、grepは検索文字列と一致した行だけを表示しますが、このオプションを付けると一致行の前 or 後ろ or 前後 の行も表示させることができます。

一致行の後ろの行も表示したい( -A)

grep -A 1 "3." grep.txt

結果

# grep -A 1 "3." grep.txt
3. cccccccccccccccccccccccccccccc
4. dddddddddddddddddddddddddddddd

 

一致行の前の行も表示したい( -B)

grep -B 1 "3." grep.txt

結果

2. bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3. cccccccccccccccccccccccccccccc

 

一致行の前後両方の行を表示したい( -数字)

grep -1 "3." grep.txt

結果

2. bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3. cccccccccccccccccccccccccccccc
4. dddddddddddddddddddddddddddddd

 

2. 行数を表示する ( -c)

次のオプションは一致した文字列を表示するのではなく、一致した文字列のを表示するオプションです。
初心者の頃はgrep "文字列" | wc -l というようにパイプでつなげてwcで行数を表示していましたが、実はgrepコマンドだけでできると知って衝撃を受けたことを覚えています。

grep -c "3." grep.txt

結果

1

 

3. 大文字・小文字の違いを無視する ( -i)

通常linuxは大文字/小文字を別の文字として認識しますので、grepでも同様です。しかしmacアドレスなど大文字で書かれてるか小文字で書かれてるかわからないパターンでは困ることがたまにあります。
そんなときには大文字小文字のどちらでもヒットする -i オプションを使います。

grep -i "A" grep.txt

結果

1. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

 
ちなみにオプションを付けないと何も引っかかりません。

grep "A" grep.txt

結果


 

4. 正規表現を一切考慮しない ( -F)

grepはデフォルトでは正規表現を考慮してくれます。しかし特殊文字を文字列として検索したい場合にはこれが邪魔になることがあります。そんな時は -F オプションを付けます。

grep -F "[1-3]" grep.txt

結果ですが、何も表示されません。


 
オプションを付けない場合、[数字-数字] というのは数字の範囲指定になるので、1~3が引っかかります。

grep "[1-3]" grep.txt

結果

1. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2. bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3. cccccccccccccccccccccccccccccc

ちなみに私は -Fを付けると普通のgrepより速いと思っていたのですが、この記事を書く時に実際に試したところ、特に速くならないことがわかりました。。

 

5. 一致する場合ファイル名だけを表示する ( -l)

次は少し毛色が違いますが、複数のファイルを検索する時、一致した箇所ではなく、ファイル名だけを表示するオプションになります。

つまりこういうことです。

grep -l "3." grep.txt

結果

grep.txt

このようにファイル名だけが表示されます。

 

6. 一致した箇所の行番号を表示

大きなファイルを検索するときなど、複数箇所でマッチすることがある場合などに使います。

$ grep -n "3." grep.txt

結果

3:3. cccccccccccccccccccccccccccccc

 
以上、grepのよく使うオプションのまとめでした。


スポンサーリンク




コメント一覧


コメントを投稿する


お名前


コメント内容





TOP back