10

grepがUTF-16ドキュメントで「hello」のような単語を見つけられないことに不満を感じています。

ファイルのエンコーディングを推測して適切に処理しようとするgrepのバージョンを誰かが推奨できますか?

4

3 に答える 3

6

perl ベースの grep の代替として使用できますか?

ぜひチェックしてみてくださいack

Unicode エンコーディングをサポートし、基本的には grep ですが、より優れています。

grep で一致する Unicode ロケールを試してください

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
于 2009-03-05T03:16:54.063 に答える
2

Perl は grep よりもはるかに優れた正規表現構文を備えており (はるかに強力です)、UTF8 と UTF16 をサポートしていますが、エンコーディングを推測するのがどれだけ優れているかはわかりません...使用するエンコーディングを指定すると、これらのファイルを問題なく読み取り、正規表現を実行できます。そのための小さな Perl プログラムを自分で作成する必要があります (いわば、Perl での独自の micro-grep 実装です) が、それほど難しくありません。Perl はすべての主要なオペレーティング システムに対応しています。

于 2009-03-05T00:26:49.727 に答える