Как мне избавиться от этого символа юникода? - PullRequest
3 голосов
/ 20 декабря 2011

Есть идеи, как избавиться от этого раздражающего персонажа 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 для этого?

Ответы [ 2 ]

3 голосов
/ 20 декабря 2011

Попробуйте 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?

1 голос
/ 20 декабря 2011

Это может работать для вас (GNU sed):

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

Это покажет строку в том виде, в котором sed видит ее в восьмеричном виде, затем используйте:

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

Где nnnявляется восьмеричным значением, чтобы удалить его / их.

...