utf8とISO8859-1の混合エンコーディングを使用するファイルがたくさんあります。それらの唯一の実際の違いは、utf8に変換したい4文字です。これは手動で行う予定なので、そのファイルを含むファイルを見つけるだけです。
私はそれらを見つけるためにgrepingしようとしましたが、grep -rlP '[\xe4\xf5\xf6\xfc\xc4\xd6\xd5\xdc]' *
ISO8859-1のこれらの文字のバイトコードがUnicodeの同じ文字のUnicodeコードポイント値とまったく同じであることを認識していません(UTF8では2で示されていますが) 。バイト)。
grep
コードポイントの代わりにバイト値を見つける方法がわからないので...ここまで来ました。 PS!特定のCentOS 7システムには何もインストールできません。
特定のバイトまたは複数のバイトについてディレクトリ内のすべてのファイルを取得する方法は?
答え1
grep
C言語環境で実行すれば可能だと思います。
文字列はUTF-8形式の7バイトで、ööli
U + 00F6です。c3 b6 c3 b6 6c 69 0a
ö
UTF-8ロケールにあると仮定すると、grep -P
U + 00F6文字を探します。
$ echo 'ööli' |grep -o -P '\xf6'
ö
ö
C ロケールではバイト C3 を探します。
$ echo 'ööli' |LC_ALL=C grep -o -P '\xc3'| od -tx1
0000000 c3 0a c3 0a