grep

#unixコマンド#DOSgrep

 

grep コマンドオプション

  • -H Add 'filename:' prefix(一致したファイル名も出力する)
  • -n Add 'line_no:' prefix(一致した行番号も出力する)
  • -l Show only names of files that match(一致したらファイル名だけを出力する)
  • -r Recurse(再帰処理
  • -i Ignore case(大文字/小文字を無視する)

 ◆DOS窓での grep を極めよう!

  •  オプション無し

  DOS> grep  "^1"  sample.txt

  • 一致した文字列を含むファイル名だけを出力する

  DOS> grep  -l  "^1"  sample.txt

  -----

  sample.txt

  -----

   「-l」...ファイル名だけを出力する(「-H」や「-n」は無効になる

  • 一致した文字列を含むファイル名と行番号も出力する

  DOS> grep  -Hn  "^1"  sample.txt

  -----

  sample.txt : 3 : 123

  -----

  「-H」...ファイル名出力

  「-n」...行番号出力

  DOSgrep  -Hnr  "^1"  *

  -----

  sample.txt : 3 : 123

  -----

  「-H」...ファイル名出力

  「-n」...行番号出力

  「-r」...再帰検索

  「*」...ファイル名を「*」にしないと正しく動作しない

  • 文字列を or条件 で指定する(※検索文字列を「\|」でつなぐか「-e」を使う

  DOS> grep  -Hn  "^a\|^A"  sample.txt(先頭が「a」か「A」で始まるもの)

  又は

  DOS> grep  -Hn  -e  "^a"  -e  "^A"  sample.txt

  -----

  sample.txt : 1 : abc
  sample.txt : 2 : ABC

  -----

  • 文字列を and条件で指定する(grepをパイプ「|」でつなぐ

  DOS> grep  -Hn  "^a\|A"  sample.txt  | grep  "abc"

  -----

  sample.txt : 1 : abc
  -----

vimgrep を極めよう! (内部grep

 内部grep(vimgrep)は、vimさえ使えれば使用可能

  • カレントファイルの中身を検索する(単一キーワード)

  :vimgrep  /キーワード1/  |  copen[cwin]

  • カレントファイルの中身を検索する(複数キーワードの or)(「\|」でつなぐ)

  :vimgrep  /キーワード1\|キーワード2/  |  copen[cwin]

  • カレントディレクトリにあるファイルすべてを検索する

  :vimgrep  /キーワード1/  |  copen[cwin]

  :vimgrep  /キーワード1/  **/*  |  copen[cwin]

  • カレントディレクトリ配下の特定の拡張子を再帰的に検索する(外部grepではできないようだ)

  :vimgrep  /キーワード1/  **/*.txt  |  copen[cwin]

 ◆vimgrep を極めよう! (外部grep

  • _vimrcに下記が設定されている必要がある。

  -----

  set  grepprg=grep

  -----

  • カレントファイルの中身を検索する(単一キーワード)

  :grep  -Hn  "キーワード1"  %  |  copen[cwin]

  • カレントファイルの中身を検索する(複数キーワードの or)(「-e」を使う)

  :grep  -Hn  -e  "キーワード1"  -e  "キーワード2"  %  |  copen[cwin]

  :grep  -rHn  "キーワード"  *  |  copen[cwin](vimgrepでは「**/*」だったね)