Windows における grep について
Windows コマンドプロンプト環境でも grep は割とよく使う。Windows にデフォルトで grep は入っていないので何かしら互換ツールを導入する必要がある。
Windows に grep が入る同線はけっこういっぱいあり、開発環境をいろいろ入れていると、至る所に grep が設置されるので、どの grep を使うのが適切っぽいか動作を軽く検証した。
※今回は MSYS Bash 等の環境ではなく、生のコマンドプロンプトにおける挙動を確認した。
検証環境
- Windows 10 Home
chcp 932 (Shift_JIS) における動作
MSYS付属grepのケース
> echo 漢字 | C:\MinGW\msys\bin\grep.exe 漢字
漢字
MSYS2付属grepのケース
> echo 漢字 | C:\msys2\usr\bin\grep.exe 漢字
(出力なし)
UnxUtils付属grepのケース
> echo 漢字 | C:\UnxUtils\usr\local\wbin\grep.exe 漢字
????
Git付属grepのケース
> echo 漢字 | "C:\Program Files\Git\usr\bin\grep.exe" 漢字
(出力なし)
chcp 65001 (UTF-8) における動作
MSYS付属grepのケース
> echo 漢字 | C:\MinGW\msys\bin\grep.exe 漢字
(出力なし)
MSYS2付属grepのケース
> echo 漢字 | C:\msys2\usr\bin\grep.exe 漢字
漢字
UnxUtils付属grepのケース
> echo 漢字 | C:\UnxUtils\usr\local\wbin\grep.exe 漢字
(出力なし)
Git付属grepのケース
> echo 漢字 | "C:\Program Files\Git\usr\bin\grep.exe" 漢字
漢字
所感
コマンドプロンプトのデフォルトコードページを 65001 (UTF-8) にするのはやりすぎ(他のコマンドラインツールへの影響が予測できない) かと思うのでそれはしないとして、とりあえず chcp 932 (Shift_JIS) の環境を前提にするとすれば、普段は MSYS の grep がデフォルトで実行されるように PATH を通しておくのが利便性的に無難かな、と思った。
※ Cygwin については検証はしていない。今更 Cygwin を使う気持ちは起きないのでそもそも最近は Cygwin をインストールすることはなくなった。