アクセント文字を含むファイルからテキストを検索する

アクセント文字を含むファイルからテキストを検索する

ファイルからアクセント付きのテキストを検索したいです。 grepを使用してプレーンテキストを検索できることを知っています。

grep -rnw './' -e 'KORONA'

KORONAVÍRUS...しかし、のようにアクセント文字を持つ単語には機能しませんobmedzená

どのような推奨事項がありますか?

答え1

すべてのファイルのエンコードが同じ場合は、そのエンコードで検索された文を作成します。これにより、2つの可能な条件が生じる。

  • コマンドライン(またはコマンドが実行される場所)(変数の1つに設定できますlocale)のエンコーディングはLC_*すべてのファイルに対して同じであり、通常どおりgrepを実行します。

    grep -rn 'KORONAVÍRUS, obmedzená.'
    

-w行全体を一致させたい場合にのみ、このオプションを使用してください。

  • すべてのファイルのエンコードが異なる場合は、検索文字列をそのエンコードに変更します。

    $ echo 'KORONAVÍRUS, obmedzená.' >orig
    $ grep -ran "$(cat orig | iconv -t CP1252)"
    

    ここでこの-aオプションを使用すると、grepがbinary

ファイルに別のエンコーディングが含まれている場合、解決策はありません。ファイルエンコーディングを自動的に検出する方法はありません。

これはいいえ統一されたエンコーディングが適用されていないファイルの場合は、ファイルのリストから検索できます。

関連:
grep / ackを使用してランダムにエンコードされたファイルを処理する方法は?

関連情報