如何查找文件中存在哪些特殊字符并将这些字符替换为零

如何查找文件中存在哪些特殊字符并将这些字符替换为零

我有一个以下格式的文件..

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 行
,应该像下面这样替换:
这是第 0011220033 行

这是我用来手动执行的格式。

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

答案1

使用sed

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

将除A-Za-z0-9Tab之外的所有字符替换Space为 0。添加您想要将它们保留在上面的字符类中的任何其他字符。

如果你的locate是 UTF-8,请使用它来替换字符而不是字节。

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

相关内容