如何在某个范围内使用 sed 删除 Unicode?

use*_*314 5 regex unicode sed

我想删除某个范围内的 Unicode,例如:

echo "abc???123" | sed 's/[\uff21-\uff3b]//g'

期望"abc123",但得到:

sed: -e 表达式 #1, char 20: 无效范围结束

或使用:

echo "abc???123" | sed 's/[?-?]//g'

得到:

sed: -e 表达式 #1, char 14: 无效的排序规则字符

anu*_*ava 4

Unicode 支持sed没有明确定义。使用命令行可能会更好perl

\n\n
echo "abc\xef\xbc\xa1\xef\xbc\xa2\xef\xbc\xa3123" | perl -CS -pe \'s/[\\x{FF21}-\\x{FF3B}]+//g\'\n\nabc123\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用很重要-CS标志非常重要,这样才能获得输入/输出/错误的正确 UTF8 编码。

\n