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

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

编译通过。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值