简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM