LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: awingA

请问如何知道中文一个文档中一个词出现的次数?

[复制链接]
发表于 2004-12-17 00:08:15 | 显示全部楼层
nait你有试过吗?在我这可是不行阿。。。
发表于 2004-12-17 13:47:17 | 显示全部楼层
最初由 yongjian 发表
nait你有试过吗?在我这可是不行阿。。。

o,sorry
我打错了,sed应用双引号,看我的输出
  1. [leo@leo:/home/leo/test] $ cat test
  2. abc bbb ddd abcabc abcabcabc
  3. abc ccc ddd www abc
  4. abcabc
  5. [leo@leo:/home/leo/test] $ sed "s/\<abc\>/&\n/g" test
  6. abc
  7. bbb ddd abcabc abcabcabc
  8. abc
  9. ccc ddd www abc

  10. abcabc
  11. [leo@leo:/home/leo/test] $ sed "s/\<abc\>/&\n/g" test|grep '\<abc\>'|wc -l
  12. 3
复制代码

怎么样,这样就达到目的了吧:p :p :p
发表于 2004-12-17 14:28:10 | 显示全部楼层
嘿嘿,虽然答案正确,但其实没有真正的match到所有的"abc"词. 你没发现倒数第二行最后还有一个"abc"没有匹配到吗? 之所以答案正确只是因为grep是对行搜索,而不对词. 不准确的pattern matching是不可取的, 因为也许对这个例子是对的, 对其他的就不行了...
发表于 2004-12-17 15:07:26 | 显示全部楼层
最初由 yongjian 发表
嘿嘿,虽然答案正确,但其实没有真正的match到所有的"abc"词. 你没发现倒数第二行最后还有一个"abc"没有匹配到吗? 之所以答案正确只是因为grep是对行搜索,而不对词. 不准确的pattern matching是不可取的, 因为也许对这个例子是对的, 对其他的就不行了...
能否说明白点?我觉得都匹配了阿
  1. [leo@leo:/home/leo/test] $ cat test
  2. abc bbb ddd abcabc abcabcabc
  3. abc ccc ddd www abc
  4. abcabc
  5. [leo@leo:/home/leo/test] $ sed "s/\<abc\>/&\n/g" test
  6. [color=crimson]abc[/color]
  7. bbb ddd abcabc abcabcabc
  8. [color=crimson]abc[/color]
  9. ccc ddd www [color=crimson]abc[/color]

  10. abcabc
  11. [leo@leo:/home/leo/test] $ sed "s/\<abc\>/&\n/g" test|grep '\<abc\>'|wc -l
  12. 3
复制代码
发表于 2004-12-17 23:50:22 | 显示全部楼层
从你的sed命令中看出,你将“abc"词做了整词搜索后将其append一个"\n",这样就只有”abc"会单分一行。 但是倒数第二行的那个“abc"就分不出来了。又因为grep是对行而不是对词,所以当用grep "\<abc\>"搜索时结果是一样的。结果是一样的没错,我是想如果象这样:

  1. sed "s/\<abc\>/\n&\n/g" test | grep '\<abc\>'|wc -l
复制代码

是不是更准确些。同时也能真正的分辨出这个词。
发表于 2004-12-17 23:52:02 | 显示全部楼层
回到正题。。。兄弟们请试试如何对付中文吧。
发表于 2004-12-18 09:58:34 | 显示全部楼层
我还是觉得前面加不加\n都无伤大雅
突然想到grep还有个-w开关
sed "s/\<abc\>/\n&\n/g" test | grep -w abc|wc -l
发表于 2004-12-18 13:02:30 | 显示全部楼层
最初由 yongjian 发表
回到正题。。。兄弟们请试试如何对付中文吧。
我试了一下,sed和grep对中文的支持不错啊
可以直接用的
至少我这边是可以的
发表于 2004-12-18 15:47:35 | 显示全部楼层
-----------------------------------
中国    中国中国 中国
中国中 国中国 中国
-----------------------------------

  1. cat chinese.txt|sed 's/\<中国\>/\n&\n/g'|sed -n '/\<中国\>/p'|wc -l
复制代码

sed行, grep就是搞不出来.
发表于 2004-12-18 16:15:11 | 显示全部楼层
  1. [leo@leo:/home/leo/test] $ cat chinese.txt
  2. 中国 中国中国 中国
  3. 中国中 国中国 中国
  4. [leo@leo:/home/leo/test] $ cat chinese.txt|sed  's/\<中国\>/\n&\n/g'                       
  5. 中国
  6. 中国中国
  7. 中国

  8. 中国中 国中国
  9. 中国

  10. [leo@leo:/home/leo/test] $ cat chinese.txt|sed 's/\<中国\>/\n&\n/g'|sed -n '/\<中国\>/p'|wc -l
  11. 3
复制代码
没问题啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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