在不同系统之间代码拷贝时,有时会有特殊字符问题。例如在网上看到别人的代码不错,拷贝到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 -C
00000000 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 -C
00000000 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
编译通过。