Windowsでgrepコマンドを使って検索したい場合にはどうしたら良いのだろうか。この記事では、WindowsでgrepコマンドをコマンドプロンプトやPowerShellで使う方法はあるのか、grepコマンドと互換性のあるコマンドは何か、詳しく解説する。
【Windows】「grep」で検索するには?
grepコマンドとは、UNIX系OSでファイル内の特定の文字列を検索するのに使うためのコマンドである。LinuxやMacでは当たり前のように使える。しかし、Windowsでgrepコマンドを使おうと思ってもエラーが出て使えない。Windowsでgrepコマンドを使うことはできるのだろうか。
・Windowsでgrepコマンドは使えない
結論から言うと、Windowsではgrepコマンドを使うことはできない。Windowsではコマンドプロンプトと、コマンドプロンプトの上位互換のPowerShellがコマンドを使うアプリだが、どちらもgrepコマンドを使うことはできないので注意が必要だ。
ただし、grepコマンドの代わりにWindowsで使えるコマンドは用意されている。grepコマンドを使う必要がある時には、コマンドプロンプトとPowerShellそれぞれで使えるコマンドを使うようにしよう。
【Windows】テキストファイルやフォルダを検索する方法【コマンドプロンプトを使う場合】
Windowsに標準搭載されているコマンドプロンプトで、grepコマンドの代わりのコマンドを使ってテキストファイルやフォルダを検索する方法は次のとおりである。
・起動方法
コマンドプロンプトの起動方法を見ていこう。
・findコマンド
検索対象となるファイルの文字コードがShift-JISもしくはBOMあるUTF-16の場合には、findコマンドを使うことができる。Windowsで作成されるファイルは多くがShift-JISなので、Windowsだけで利用する場合にはfindコマンドで問題はない。
findコマンドを使う場合の構文は次のとおりである。
find 検索文字列 検索対象ファイル名
findコマンドのオプションは次のとおりである。
/V:検索対象文字列を含まない行をすべて表示
/C:検索対象文字列を含む行の数だけ表示
/N:検索で引っかかった行を表示
/I:大文字小文字を区別せずに検索
/OFF:オフライン属性設定されたファイルをスキップしない
・findstrコマンド
ファイルに使われている文字コードがShift-JISもしくはBOMあるUTF-16以外のものである場合には、findコマンドでは検索できない。その場合には、findstrコマンドを使う。
findstrコマンドを使う場合の構文は次のとおりである。
findstr 検索対象文字列(正規表現) 検索対象ファイル
findstrコマンドで使えるオプションは次のとおりである。
/B:行の先頭にあるパターンを検索
/E:行の末尾にあるパターンを検索
/L:検索文字列リテラルとして使用
/R:検索文字列正規表現として使用
/S:現在のフォルダとすべてのサブフォルダから一致するファイルを検索
/I:検索するときに大文字と小文字を区別しない
/X:検索文字列に完全に一致する行のみ表示
/V:検索文字列に一致しない行のみ表示
/M:検索文字列が一致したらファイル名のみ表示
/O:一致するか画像の前に文字オフセットを表示
/P:印刷不可能な文字を含むファイルを省く
【Windows】テキストファイルやフォルダを検索する方法【PowerShellを使う場合】
Windowsではコマンドプロンプトの上位互換であるPowerShellを使ってgrepコマンドを使うようにテキストファイルやフォルダを検索することができる。PowerShellで検索する方法は次のとおりである。
・起動方法
まずはPowerShellの起動方法である。
・Select-Stringコマンド
PowerShellで利用できるgrepコマンドの代わりのコマンドはSelect-Stringコマンドである。Select-Stringコマンドを使うときの構文は次のとおりである。
Select-String 検索対象文字列 検索対象ファイル -Encoding default