首页 » 编程笔记 » Linux/Unix » 正文

linux sort uniq 中文时遇到的一点小问题


最近在做数据挖掘的时候遇到点问题

cat keyword.txt|sort|uniq -c 之后发现相邻的词没有去重
1 a4打印纸包
1 a4打印纸包
1 a4打印纸包
1 a4打印纸包邮
2 a4打印纸包邮 特价
3 A4打印纸 厚

反复试了之后发现也没有解决,
注意:uniq命令读取文本文件或者标准输入,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集ascii的排序序列进行的。
既然这个uniq命令只能对相邻行进行去重,那么我们一般可以先对文本进行sort排序之后,紧接着在uniq一把,不相邻行的去重问题也同样解决了。

最后在网上查了查,怀疑可能是编码问题,我的汉字是gbk的,vimrc文件设置了对gbk的支持,系统变量确实utf8的,Linux系统要系统支持中文设置 执行
export LANG=zh_CN.GB18030
再次排序发现问题解决,但是一旦系统重启即恢复,不是长久之计
解决办法:
找到和编辑系统配置

[root@www ~]# vi /etc/sysconfig/i18n

把原配置

LANG=”en_US.UTF-8″

修改为

LANG=”zh_CN.GB18030″

保存,完成修改。