ファイルにどの特殊文字があるかを見つけ、その文字をゼロに置き換える方法

ファイルにどの特殊文字があるかを見つけ、その文字をゼロに置き換える方法

以下の形式のファイルがあります。

this is file data under the file 123�45
this is second line 123¿

私はこのO / Pが欲しい。

this is file data under the file 123045
this is second line 1230

ソースはUTF-8のみです。すべてのUTF-8文字は
001122×33行のように0に置き換える必要があります。 0011220033行は
次のように置き換える必要があります。

これは手動で実行するために使用する形式です。

grep -P "[^\x00-\x7F]" filename

答え1

使用sed:

LC_ALL=C sed -E 's/[^[:alnum:][:blank:]]+/0/g' < infile

A-Za-zおよびを除くすべての文字をゼロに置き換えます。上記の文字クラスに保持したい他の文字を追加してください。0-9TabSpace

UTF-8の場合は、locateこれを使用してバイトの代わりに文字を置き換えます。

LC_ALL='C.UTF-8' sed -E 's/[^[:alnum:][:blank:]]/0/g' < infile

答え2

使用tr:

tr -sc '[:alnum:][:blank:]\n' 0

答え3

コマンド1:sed "s/[?*_><&%#@]/0/g" filename

output

this is file data under the file 123045
this is second line 1230

コマンド2:sed "s/[^a-z 0-9]/0/Ig" filename

出力

this is file data under the file 123045
this is second line 1230

関連情報