当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-26 0:28 

注册: 2007-10-29 15:57
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
最近开始常使用linux,看那些基本的shell命令的时候想到的

代码:
cat abc.txt | grep en | wc -l


用这个应该可以统计abc.txt中有en的行数

但是如果想统计abc.txt中开头是en的单词的个数应该如何写呢?

看了下 man grep 和 man wc 还是不知道应该如何

感觉看man的内容不知道如何看起,不知道大家一般都是怎么看的?

还望大家多多指教,先谢谢了~~


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-26 9:02 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
grep '^en'
正则而已


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-26 11:14 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
eexpress 写道:
grep '^en'
正则而已

你这个只是每行以en开头的啊。
照理用awk比较好,不过也有其他办法,来个变态的:
代码:
sed 's/\ en/\nen/g' file|grep "^en"|wc -l


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-26 18:53 

注册: 2007-10-29 15:57
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
嗯,2楼的方法还是只能数有en打头的单词的行的数目,不过还是很感谢

3楼的可以也给出用awk做的写法么?

3楼的命令的结果好像也不对 -_-!

万分感谢


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-26 19:30 

注册: 2007-10-29 15:57
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
对3楼命令的测试如下

文件内容
代码:
en1 en2 en3 en4
en5 5en


执行三楼的命令后的结果输出

2

那个替换命令貌似是有问题的

我只会在vi里面的替换~~

晕晕


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-26 20:08 
头像

注册: 2007-12-25 12:51
帖子: 231
送出感谢: 0 次
接收感谢: 0 次
grep -o "\<en\>" FILE | wc -l


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-26 20:35 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
tiany 写道:
对3楼命令的测试如下

文件内容
代码:
en1 en2 en3 en4
en5 5en


执行三楼的命令后的结果输出

2

那个替换命令貌似是有问题的

我只会在vi里面的替换~~

晕晕

怎么会,我执行结果是正确的阿:
代码:
xiooli(~)<< cat file
en1 en2 en3 en4
en5 5en
xiooli(~)>> sed 's/\ en/\nen/g' file |grep "^en"|wc -l
5
xiooli(~)<<

下面是awk的:
代码:
xiooli(~)<< cat file
en1 en2 en3 en4
en5 5en
xiooli(~)>> awk '{for(i=1;i<=NF;i++)if($i~/^en/)count++};END{print count}' file
5
xiooli(~)<<


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-26 23:15 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
代码:
grep -o "\<en" FILE | wc -l

就是 c\nc 给出的,纠正一下笔误。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-26 23:22 
头像

注册: 2007-12-25 12:51
帖子: 231
送出感谢: 0 次
接收感谢: 0 次
多谢多谢,我看成有多少个“en“了~ :em06


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-28 0:12 

注册: 2007-10-29 15:57
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
呵呵,几天白天忙,现在终于有时间回帖了

呵呵,首先谢谢各位的热心帮助哈

问题基本弄清楚了

3L的方法是对的,之所以我刚开始测试说那个方法错了,是因为当时看帖的时候是win系统,然后偷懒远程连了个Unix的测试的,结果有问题,返回的是2

对这个有点疑问,产生这个问题的原因是因为Unix和Linux对sed命令的处理上有差异 还是对换行的处理有差异?在Unix下我换了csh,sh,bash结果都不对

awk的那个的测试结果是对了,呵,对awk的兴趣更浓了

c\nc的方法也是可以解决的,不过可不可以麻烦你给我解释下 -o 参数的含义,看了man里面的,不是看的很懂。。。

谢谢大家了


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 请教一个统计指定文件中指定打头的单词的个数的问题
帖子发表于 : 2009-03-29 23:52 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
grep -o 就是只输出匹配的部分,GNU grep 带此选项,如果用的 UNIX,可能没有这个选项。
正常情况 grep 输出所有匹配的行,加上 -o 后就把所有匹配的部分每个一行地输出。当查找的模式是一个普通的字符串(不含正则表达式中的特殊字符)时,可能也就是可以用于计数了(如本例)。但是如果用上正则表达式,则可能有更多的用途。参见:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=190079


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译