使用GNU sed 4.2.2移除文本文件中的项目符号字符
解决项目符号移除问题
我来帮你搞定这个问题!从你提供的hexdump结果来看,这个项目符号并不是UTF-8编码的U+2022(也就是常见的•),而是Windows-1252编码下的单字节字符0x95——这也和它最初来自Access的背景吻合(Access默认使用Windows相关编码)。
之前你用sed 's/\u2022//g'无效,核心原因是:\u2022在GNU sed里会匹配UTF-8格式的三个字节(E2 80 A2),但你的文件里这个符号是单字节的0x95,自然匹配不上。
正确的解决方案
直接用GNU sed支持的十六进制转义符\xHH来匹配这个0x95字符:
sed 's/\x95//g' filename.txt
如果需要直接修改原文件,可以加上-i参数(GNU sed的-i无需备份后缀,若需保留原文件备份,可写成-i.bak):
sed -i 's/\x95//g' filename.txt
额外验证小技巧
你可以先提取一行包含该符号的内容,用hexdump再次确认字符编码:
grep '^•' filename.txt | head -1 | hexdump -C
如果输出开头是95,就说明这个命令完全适用。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

