CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  系统维护与使用区

~~如何获取一个文本文件的字符串数???~~

楼主savagegan(shusheng gan)2006-11-07 11:25:37 在 Linux/Unix社区 / 系统维护与使用区 提问

如题,比如一个文本文件text.txt:  
  aaaa   bbbb  
  cc   ffffggg  
   
  现在想要对文件的内容进行计数,得到   4  
  应该如何做??  
  用grep   或   shell脚本应该可以  
  但具体的命令和语句不会  
  本人菜鸟,比较紧急,也没时间慢慢找书看了,谢谢赐教:)  
   
  请各位大哥给出详细命令或语句…… 问题点数:20、回复次数:18Top

1 楼savagegan(shusheng gan)回复于 2006-11-07 11:43:26 得分 0

upupup  
  Top

2 楼xdspower(杂食菜熊)回复于 2006-11-07 11:52:07 得分 0

wc   -w   filename  
  多用man系统啊,此外在网络上查找啊Top

3 楼Jiura()回复于 2006-11-07 12:28:59 得分 0

用wc可以看到TXT的字符数,行数.   LZ是否就是这个意思Top

4 楼savagegan(shusheng gan)回复于 2006-11-07 12:37:32 得分 0

要求:  
  不能用wc  
   
  其它的方法呢??Top

5 楼savagegan(shusheng gan)回复于 2006-11-07 12:41:38 得分 0

用shell脚本应该可以吧  
  比如  
  n   =   0;  
  while   read   str  
  do  
          n   =n+1;  
  done    
  echo   $n  
   
  但我不知道具体怎么写,请大家指教Top

6 楼savagegan(shusheng gan)回复于 2006-11-07 13:26:30 得分 0

没人知道吗??Top

7 楼xdspower(杂食菜熊)回复于 2006-11-07 13:46:23 得分 0

如果不能用wc,就是用grep匹配所有分词符号(连续的,采用最大匹配),然后计数+1,但这个不够精确的。Top

8 楼savagegan(shusheng gan)回复于 2006-11-07 13:50:44 得分 0

楼上的大哥,如何实现??  
  我不太会用shell  
  现在急用啊给个例子吧  
  就几行而已  
  谢谢Top

9 楼asphp(AwaiLi)回复于 2006-11-07 14:47:41 得分 0

wc   test.txt|awk   '{print   $2}'Top

10 楼savagegan(shusheng gan)回复于 2006-11-07 14:49:26 得分 0

倒……  
  前面说过了,能用wc  
   
  谁能给出一个脚本例子??  
  比如:  
  while   read   val  
  do  
  n=n+1;   (累加,我不会shell的语法)  
  done  
  Top

11 楼savagegan(shusheng gan)回复于 2006-11-07 14:49:43 得分 0

倒……  
  前面说过了,“不”能用wc  
   
  谁能给出一个脚本例子??  
  比如:  
  while   read   val  
  do  
  n=n+1;   (累加,我不会shell的语法)  
  done  
   
  Top

12 楼savagegan(shusheng gan)回复于 2006-11-07 15:00:49 得分 0

我自己写了一个(试了好久):  
   
  n=0;  
  while   read   aa;  
  do  
          n=`expr   $n   +   1`;  
  done   <   1.txt  
  echo   $n;  
   
  但上面的read会读入每行的内容,我想每次读入一个词,而不是一行,如何做???Top

13 楼asphp(AwaiLi)回复于 2006-11-07 15:03:55 得分 15

 
  filecontent=`cat   test.txt`  
  numwords=0  
  for   word   in   $filecontent  
  do  
  numwords=`expr   $numwords   +   1`  
  done  
   
  echo   $numwordsTop

14 楼xdspower(杂食菜熊)回复于 2006-11-07 15:59:43 得分 5

如果你的文件很标准,都是由空格进行分词,使用awk来完成是最方便的。  
  awk   'BIGIN   {   FS   =   "[:space:]"   ;   count   =   0   ;}   {count   =   count   +   NF   }   END   {   printf   count"\n"   }'   filenameTop

15 楼xdspower(杂食菜熊)回复于 2006-11-07 16:00:17 得分 0

注意,上面是在一行中。Top

16 楼savagegan(shusheng gan)回复于 2006-11-07 16:04:33 得分 0

谢谢楼上:)Top

17 楼Fenris()回复于 2006-11-09 17:41:15 得分 0

学习了!Top

18 楼xdspower(杂食菜熊)回复于 2006-11-14 17:16:12 得分 0

最近看一篇文章  
  http://www-128.ibm.com/developerworks/cn/linux/l-shprg/index.html  
  想到当时我测试asphp(AwaiLi)的脚本时确实出现了这样的问题,所以上面asphp(AwaiLi)的脚本进行一下改造可能性能提高很多的。  
  而且改造仅仅只有一句  
  numwords=`expr   $numwords   +   1`   改成  
  numwords=$[   ${numwords}+1   ]  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:savagegan
  • asphp
  • xdspower

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo