3

知道如何从一堆文本文件中摆脱这个恼人的字符 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 方法呢?

4

2 回答 2

3

试试sed "s/\`//g" *。(我添加了,g所以它会删除它找到的所有反引号)。


编辑:这不是 OP 想要删除的反引号。

按照这个问题的解决方案,这应该可以工作:

sed 's/\xc2\x92//g'

为了证明它确实:

$ CHARS=$(python -c 'print u"asdf\u0092asdf".encode("utf8")')

$ echo $CHARS
asdf<funny glyph symbol>asdf

$ echo $CHARS | sed 's/\xc2\x92//g'
asdfasdf

看到它是你已经尝试过的东西,也许你的文本文件中的不是 U+0092?

于 2011-12-20T06:56:24.933 回答
1

这可能对您有用(GNU sed):

echo "string containing funny character(s)" | sed -n 'l0'

这将在 sed 中以八进制显示字符串,然后使用:

echo "string containing funny character(s)" | sed 's/\onnn//g'

nnn八进制值在哪里,删除它/它们。

于 2011-12-20T11:02:22.520 回答