Как удалить символ степени (M-0, также известный как нулевой верхний индекс?) С помощью sed - PullRequest
0 голосов
/ 10 января 2019

У меня есть файл, который включает температуру и символ градуса, который я хочу удалить. В Notepad ++ это выглядит так:

40238230,194°,47136

Символ не печатается простым текстом cat:

40238230,194,47136

Но cat -e показывает M-0, где символ:

40238230,194M-0,47136

Как я могу избавиться от этого символа? Я думал, что следующий sed сделает это (включая только цифры и запятые), но не делает:

sed -r 's/[^0-9\,]//g'

1 Ответ

0 голосов
/ 10 января 2019

Может быть, вы не настроили консоль для использования Unicode?

Знак градуса - Unicode & # x00B0. В UTF-8 это \ xc2 \ xb0. Поэтому, если ваша консоль не использует Unicode, вам придется заменить эти два байта.

M-нотация описана здесь: Что такое «M-нотация» и где она документирована? .

M-0 is 0xb0

На консоли с включенным Юникодом я получаю:

$ cat foo
122 °C
$ cat -e foo
122 M-BM-0C$

Теперь для удаления с помощью sed прочитайте: Удалите символы юникода из текстовых файлов - sed, другие методы bash / shell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...