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

  • 0
    Like
  • 1
    Comment

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