grepがUTF-16ドキュメントで「hello」のような単語を見つけられないことに不満を感じています。
ファイルのエンコーディングを推測して適切に処理しようとするgrepのバージョンを誰かが推奨できますか?
grepがUTF-16ドキュメントで「hello」のような単語を見つけられないことに不満を感じています。
ファイルのエンコーディングを推測して適切に処理しようとするgrepのバージョンを誰かが推奨できますか?
ぜひチェックしてみてくださいack
。
Unicode エンコーディングをサポートし、基本的には grep ですが、より優れています。
Linux や Unix などを使用している場合は、LANG 環境変数をドキュメントと一致するエンコーディングに変更することをお勧めします。
最初にロケールを確認してください。私のMacBook Proでデフォルトで設定されているものは次のとおりです。
$ locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=
たとえば、bash の下で:
$ LANG="foo" grep 'gotta be found now' file.name
もう少し永続的なもの(これには注意してください):
$ export LANG="foo"
$ grep 'bar' mitz.vah
Perl は grep よりもはるかに優れた正規表現構文を備えており (はるかに強力です)、UTF8 と UTF16 をサポートしていますが、エンコーディングを推測するのがどれだけ優れているかはわかりません...使用するエンコーディングを指定すると、これらのファイルを問題なく読み取り、正規表現を実行できます。そのための小さな Perl プログラムを自分で作成する必要があります (いわば、Perl での独自の micro-grep 実装です) が、それほど難しくありません。Perl はすべての主要なオペレーティング システムに対応しています。