求解释:关于一条sed命令去掉中文字符
时间:2011-02-25
来源:互联网
%s/[^ -~]//g
功能是在vim下去掉文中的汉字,很奇怪命令应该是把不包含空格、-、~的字符去掉的啊?
那结果应该是中文、英文字母全被干掉, -~字符保留啊?
现在的结果是英文字母没被干掉,中文的确被干掉了?
哪位高人能解释下这个命令是如何去掉中文而保留其它字符的呢?
作者: xrzs1986 发布时间: 2011-02-25
真巧啊,很久不来了,一上来就看到我以前的帖子(我记不清了)。
就是字符类啊,看看ascii,你就明白了。
作者: blackold 发布时间: 2011-02-25
作者: blackold 发布时间: 2011-02-25
多谢黑哥回复~
不过我还是不明白 [^ -~] 怎么成字符类了?
字符类不是下面这些吗?
还有这个命令和ascii有什么关系呢?按sed的模式匹配来理解的话就是把不是空格、横杠、波浪线的其他所有字符删掉啊?但疑惑的是结果却不是这样的。。。
[:alnum:]
文字数字字符
[:alpha:]
文字字符
[:digit:]
数字字符
[:graph:]
非空字符(非空格、控制字符)
[:lower:]
小写字符
[:cntrl:]
控制字符
[:print:]
非空字符(包括空格)
[:punct:]
标点符号
[:space:]
所有空白字符(新行,空格,制表符)
[:upper:]
大写字符
[:xdigit:]
作者: xrzs1986 发布时间: 2011-02-25
恩,确实,不过vim下的这些替换命令好像和sed没什么大的区别,我一直就这么理解下来了{:3_189:}
作者: xrzs1986 发布时间: 2011-02-25
你上面说的是命名字符类,还有一种是“自定义"的字符类,如[7-9]等等。
字符类肯定与编码有关啊。
作者: blackold 发布时间: 2011-02-25
说说我的理解.允许拍砖,不许打脸
这个....
正则表达式中 [] 内的代表一个字符,[^ -~] 代表行首不是 空格 到 ~ 之间的字符(应该是这样的,lz可能理解错吧, “-”的含义?)查ASCII码,应该是32-126之间的字符,测试一下.....
我擦 ....结果 。。。。结果就是TMD中文、英文字母全被干掉, ~字符保留啊
作者: 南极雨 发布时间: 2011-02-25
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28