LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1076|回复: 8

怎么过滤掉文本文件中的非中文?

[复制链接]
发表于 2005-5-20 11:20:16 | 显示全部楼层 |阅读模式
或者过滤掉文本文件中的中文
发表于 2005-5-20 13:41:41 | 显示全部楼层
如果是unicode在Perl里可以用\X过滤,在Shell里可能也有类似的
回复 支持 反对

使用道具 举报

发表于 2005-5-20 19:42:21 | 显示全部楼层
这个我感觉好像不好办:(
回复 支持 反对

使用道具 举报

发表于 2005-5-22 03:59:29 | 显示全部楼层
Post by swors
或者过滤掉文本文件中的中文


用POSIX class

去en文:

  1. s/[[:alpha:]]//g
复制代码


去中文(或者说,不是en文的东西):

  1. s/[^[:alpha:]]*//g
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-5-22 08:37:19 | 显示全部楼层
不行,我这里[:alnum:][:print:][:graph:][:alpha:]都把中文包含在内。

这个倒可以:
  1. s/[^[:upper:][:lower:][:digit:][:space:][:punct:]]//g
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-5-22 12:27:08 | 显示全部楼层
Post by troll
不行,我这里[:alnum:][:print:][:graph:][:alpha:]都把中文包含在内。

这个倒可以:
  1. s/[^[:upper:][:lower:][:digit:][:space:][:punct:]]//g
复制代码


这个去掉的可就不止是中文了。我提供的方法在我的机子上测试是可以的,看来这个可能和中文所用的encoding码有关。我用的是GBK码。
回复 支持 反对

使用道具 举报

发表于 2005-5-22 12:31:24 | 显示全部楼层
  1. s/[^[:alpha:]]*//g
复制代码


GBK编码也不行,把标点之类的全过滤了,中文还在。
回复 支持 反对

使用道具 举报

发表于 2005-5-22 12:42:46 | 显示全部楼层
Post by yongjian
这个去掉的可就不止是中文了。我提供的方法在我的机子上测试是可以的,看来这个可能和中文所用的encoding码有关。我用的是GBK码。


对不起troll,是我给出的结果错了。只用[:alpha:]是不对的。还有就是我发现sed下和vi下POSIX char class包括的内容不一样。你可能是用的sed测试的, 我使用的是vi。这个很有意思。
回复 支持 反对

使用道具 举报

发表于 2005-5-22 12:48:23 | 显示全部楼层
是的,原来如此。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表