LoginSignup
14
11

More than 3 years have passed since last update.

grepコマンドの使い方と頻出サンプル

Last updated at Posted at 2020-07-20

grepコマンド

正規表現でマッチする行を検索するコマンド

構文

grep [オプション] パターン [ファイル]
ex: grep -n abc aaa.txt

重要度

★★★★★(5/5)
必須。これを覚えていないと普段の業務に支障が出るレベル。

オプションたち

覚えたいオプション

  • -e : 正規表現を使う(regexのe?)
  • -n : 検索結果に行番号を表示する(number。よくある省略)
  • -C5 : 検索結果に一致した箇所から前後に指定した5行表示する(行数は任意。多分Cに意味はない、A,B,Cでそれぞれ一致した前、あと、前後なので、ABCどれかだなと覚えればよいかも)
  • -r : ディレクトリ内も検索対象とする(recursive。よくある省略)
  • -i : 大文字と小文字を区別せず検索する(case insensitiveのi。多分。。。)

できれば覚えたいオプション

  • -v : 一致しないもの
  • -B3 : 一致した前3行を表示する(数は任意の数字)
  • -A2 : 一致した後2行を表示する(数は任意の数字)

覚えなくてもよさそうなオプション(ひとそれぞれですが)

  • -E : 拡張正規表現で検索を行う
  • -l : 検索結果にファイル名のみ表示する
  • -h : 検索結果にファイル名を表示しない
  • -o : 検索結果に一致した文字を表示する
  • -L : 該当しないファイルを表示する

サンプル

  • grep '^A' sample.csv → 行の頭にAがついている
  • grep '[0-9]' sample.csv → '[0-9]'の文字列が含まれている行を抽出
  • ps aux | grep python → pythonという文字が含まれているプロセスを抽出
  • grep -v '^A' sample.csv → 行の頭にAがついていない
  • grep -e aaa -e bbb sample.csv → aaaとbbbどちらかが含まれる行を抽出
  • grep -i aaa sample.csv → 大文字小文字を区別せず、aaaが含まれる行を抽出

appendix

grepでAND検索したい場合

grep aaa sample.csv | grep bbb

→ aaaが含まれているものに絞って、さらにbbbが含まれているものに絞る

grepでOR検索したい場合

grep -e aaa-e bbb sample.csv

→ -eオプションを複数回繰り返す。aaaを含む行とbbbを含む行を取り出す。

特定のファイル名のものを抽出したい

ls ./ | grep aaa

→カレントディレクトリ(現在のディレクトリ)にあるaaa(ファイル名)を含むファイルを抽出。

特定の内容を含むファイルを抽出したい

grep aaa -rl ./

→カレントディレクトリ(現在のディレクトリ)にあるファイルの中身にaaaが含まれるもの

実行したコマンドの履歴から特定の文字列を含む直近のコマンドを調べたい

history | grep aaa | tail

→ヒストリーコマンドからaaaを含むコマンドを抽出。tailで最後の5つに絞り込む。

まとめ

grepコマンドは必須なので、しっかり覚えておくことをおすすめします!

14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11