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

标签 linux sed special-characters

我有一个文件,其中包含温度以及我想要删除的度数符号。在 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- 表示法:What is the "M- notation" and where is it documented? .

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

关于linux - 如何使用 sed 删除度数符号(M-0 又名上标零?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54118814/

相关文章:

c - 多线程情况下修改栈

linux - Bash - 根据多个字段对文件名进行排序

linux - Zip 垃圾路径选项不起作用

linux - 如何解析 svn diff 结果?

c++ - 控制台上的特殊字符

special-characters - Umbraco 中带有特殊字符的元描述

MySQL选择带有特殊字符的字符串

linux - 裸机交叉编译器输入

linux - 如何使用 sed 在 ubuntu 中的文件末尾添加多个换行符

bash - 将包含反斜杠的字符串读入 bash 中的变量