![如何查找文件中存在哪些特殊字符并将这些字符替换为零](https://linux22.com/image/190492/%E5%A6%82%E4%BD%95%E6%9F%A5%E6%89%BE%E6%96%87%E4%BB%B6%E4%B8%AD%E5%AD%98%E5%9C%A8%E5%93%AA%E4%BA%9B%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%E5%B9%B6%E5%B0%86%E8%BF%99%E4%BA%9B%E5%AD%97%E7%AC%A6%E6%9B%BF%E6%8D%A2%E4%B8%BA%E9%9B%B6.png)
我有一个以下格式的文件..
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-Z
、a-z
、0-9
和Tab
之外的所有字符替换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