[英]how to use sed delete Unicode in some range?
I want to remove Unicode in some range, eg: 我想在某个范围内删除Unicode,例如:
echo "abcABC123" | sed 's/[\A-\[]//g'
expect "abc123"
, but get: 期待
"abc123"
,但得到:
sed: -e expression #1, char 20: Invalid range end
sed:-e expression#1,char 20:无效的范围结束
or use: 或使用:
echo "abcABC123" | sed 's/[A-Z]//g'
get: 得到:
sed: -e expression #1, char 14: Invalid collation character
sed:-e expression#1,char 14:无效的排序规则字符
Unicode support in sed
is not well defined. sed
Unicode支持定义不明确。 You may be better off using command line perl
: 使用命令行
perl
可能会更好:
echo "abcABC123" | perl -CS -pe 's/[\x{FF21}-\x{FF3B}]+//g'
abc123
It is important to use -CS
flags here to be able to get correct UTF8 encodings for input/output/error. 在这里使用
-CS
标志非常重要,以便能够为输入/输出/错误获得正确的UTF8编码。
Not sure why sed
is not working, but you can use tr
instead 不确定为什么
sed
不起作用,但你可以使用tr
代替
$ echo 'abcABC123' | tr -d 'A-Z'
abc123
From man tr
来自
man tr
tr - translate or delete characters
tr - 翻译或删除字符
-d, --delete delete characters in SET1, do not translate
-d, - 删除SET1中的删除字符,不要翻译
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.