ファイルからアクセント付きのテキストを検索したいです。 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
。
ファイルに別のエンコーディングが含まれている場合、解決策はありません。ファイルエンコーディングを自動的に検出する方法はありません。
これはいいえ統一されたエンコーディングが適用されていないファイルの場合は、ファイルのリストから検索できます。