在sed中,为什么我不能在方括号中使用一系列十六进制转义?

时间:2016-10-28 20:00:53

标签: shell sed escaping hex

我正在尝试运行:

sed 's/[\xE0-\xEF]/_/g;

但是我对“无效的校对字符”抱怨了。方括号中的字符范围有什么问题?

2 个答案:

答案 0 :(得分:2)

生成的非ASCII兼容字符可能会干扰编码或其他任何内容。请注意,它适用于标准ASCII范围:sed 's/[\x41-\x42]/_/g'

这是tr的一种方式:

 tr "\340-\357" "_" < input > output

(这些是您提供的十六进制代码的八进制值。)

答案 1 :(得分:2)

尝试将LC_ALL environnement变量设置为C语言环境(又称POSIX语言环境):

LC_ALL=C sed 's/[\xE0-\xEF]/_/g'