Windows プロンプト環境における各種 grep の日本語挙動

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 をインストールすることはなくなった。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.