任何想法如何从一堆文本文件中摆脱这个恼人的角色U + 0092?我已经尝试了以下所有,但它不起作用。它从字符映射中被称为 U + 0092 + control
sed -i 's/\xc2\x92//' *
sed -i 's/\u0092//' *
sed -i 's///' *
啊,我找到了办法:
CHARS=$(python2 -c 'print u"\u0092".encode("utf8")')
sed 's/['"$CHARS"']//g'
但对此有直接的sed方法吗?
答案 0 :(得分:3)
试试sed "s/\`//g" *
。 (我添加了g
所以它会删除它找到的所有反引号。
按照this question中的解决方案,这应该有效:
sed 's/\xc2\x92//g'
为了证明它:
[foo@bar ~]$CHARS=$(python -c 'print u"asdf\u0092asdf".encode("utf8")')
[foo@bar ~]$echo $CHARS
asdf<funny glyph symbol>asdf
[foo@bar ~]$echo $CHARS | sed 's/\xc2\x92//g'
asdfasdf
看到你已经尝试过的东西,或许文字文件中的内容不是U + 0092?
答案 1 :(得分:1)
这可能适合你(GNU sed):
echo "string containing funny character(s)" | sed -n 'l0'
这将显示sed在八进制中看到的字符串,然后使用:
echo "string containing funny character(s)" | sed 's/\onnn//g'
nnn
是八进制值,删除/它们。