如何使用 sed 删除度数符号(M-0 又名上标零?)

How to remove degree symbol (M-0 aka superscript zero?) with sed

我有一个文件,其中包含温度以及我想要删除的度数符号。在 Notepad++ 中看起来像这样:

40238230,194°,47136

该符号不打印为普通 cat:

40238230,194,47136

但是 cat -e 显示 M-0 其中符号是:

40238230,194M-0,47136

我怎样才能去掉那个符号?我认为以下 sed 会做到这一点(只包含数字和逗号),但不会:

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

会不会是您没有将控制台设置为使用 Unicode?

学位符号是 Unicode °。在 UTF-8 中,这是 \xc2\xb0。因此,如果您的控制台未使用 Unicode,您将不得不替换这两个字节。

此处描述了 M- 表示法:

M-0 is 0xb0

在启用了 Unicode 的控制台上,我得到:

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

现在用 sed 删除:Remove unicode characters from textfiles - sed , other bash/shell methods