Shift-JISのテキストファイルをLinuxでgrepする

eyecatching_shift-jis-linux-grep プログラミング
この記事は約1分で読めます。

Windows 10のWSL2上で動いているUbuntu 20.04でgrepしようとしたら、Binary file (standard input) matchesと表示された。バイナリファイルにマッチした文字列があったよと言っているのだが、grep対象ファイルはテキストファイル。これを正しくgrepする方法を示す。

結論

結論から言うと、テキストファイルの文字コードがShift-JISであったため、Ubuntuが正しく認識できていなかった。なので、テキストファイルの文字コードをUTF-8に変換してからgrepすれば良い。

単純にcatするとこんな感じ。一見正しく表示されているように見えるが、実際は異なる。

iconvコマンドでUTF-8に変換してから表示するとこんな感じ。

パイプでgrepに渡してあげると正しくgrep結果が表示された。

タイトルとURLをコピーしました