如何删除\200, \343特殊字符

来源:互联网 发布:阿里云电话客服 编辑:程序博客网 时间:2024/05/16 15:01

在不同系统之间代码拷贝时,有时会有特殊字符问题。例如在网上看到别人的代码不错,拷贝到linx下保存。编译发现报错:

Singleton.h:25:2: error: stray ‘\200’ in program
Singleton.h:25:2: error: stray ‘\343’ in program

文件有很多行,一行行修改太麻烦。使用命令的方式统一删除

下面的例子是怎样删除\u200B

This seems to work for me:

sed 's/\xe2\x80\x8b//g' inputfile

Demonstration:

$ /usr/bin/printf 'X\u200bY\u200bZ' | hexdump -C00000000  58 e2 80 8b 59 e2 80 8b  5a                       |X...Y...Z|$ /usr/bin/printf 'X\u200bY\u200bZ' | sed 's/\xe2\x80\x8b//g' | hexdump -C00000000  58 59 5a                                          |XYZ|

Edit:

Based partially on Gilles' answer:

tr -d $(/usr/bin/printf "\u200b") < inputfile
原文: https://superuser.com/questions/207207/how-can-i-delete-u200b-zero-width-space-using-sed


对于自己遇到的问题,怎么处理呢。

hexdump -C inputfile

发现有问题的地方\200的字符数 \xe3 \x80\x80

正常的tab键是 \x09

那么使用下面的就好了:

删除特殊字符

sed 's/\xe3\x80\x8b//g' inputfile

替换特殊字符

sed 's/\xe3\x80\x8b/\x09/g' inputfile

编译通过。