最近在看shell中有个题目为统计单词的个数,使用了awk功能,代码如下

#!/bin/bash
if [ $# -ne ];then
echo "Usage:basename $0 filename"
exit
fi filename=$
egrep -o "[a-zA-Z]+" $filename |
awk '{count[$0]++}
END{printf "%-14s %s\n","Word","Count"
for(i in count)printf "%-14s %s\n",i,count[i]|"sort -nrk 2"}'

使用正则来匹配,+表示1个多个

结果如下:

[root@localhost shellcookbook]# sh word_freq.sh item.txt
Word Count
Tennis
Sports
Racket
Printer
Office
Laser
Video
Refrigerator
Player
MP
HD
Camcorder
Audio
Appliance

正好在学习python,顺便拿python实现一下吧,代码如下:

#!/usr/bin/env python
import sys,re if len(sys.argv[0:]) != 2:
print "Usage:%s file" % sys.argv[0]
sys.exit(0) try:
filename=sys.argv[1]
with open(filename) as f:
data=f.read()
except IOError:
print "Please check %s is Exised!" % filename
exit(0)
except Exception,e:
print e
sys.exit() patten=r'[a-zA-Z]+'
words=re.findall(patten,data)
#print sorted([(i,words.count(i)) for i in set(words)],cmp=lambda x,y:cmp(x[1],y[1]),reverse=True)
wordcounts=sorted([(i,words.count(i)) for i in set(words)],key=lambda x:x[1],reverse=True)
print "%-14s %s" % ("Word","Counts")
for word,counts in wordcounts:
print "%-14s %s" % (word,counts)

使用的也是正则先匹配出来后,再用sorted进行排序并计算出来个数,结果如下:

[root@localhost shellcookbook]# python word_freq_py.py item.txt
Word Counts
Printer 2
Laser 2
Office 2
Tennis 2
Sports 2
Racket 2
Appliance 1
Player 1
Video 1
HD 1
Audio 1
Camcorder 1
Refrigerator 1
MP 1

我们来看看这二个对比,程序效率如何:

# time sh word_freq.sh item.txt 

real    0m0.007s
user 0m0.003s
sys 0m0.005s
time python word_freq_py.py item.txt 

real    0m0.035s
user 0m0.031s
sys 0m0.004s

对比来看,shell程序更快,主要是使用了awk提高了效率。所以在linux下写的小程序时,shell能实现,还是使用shell实现,python辅助。

统计文件中单词的个数---Shell及python版的更多相关文章

  1. 使用tuple统计文件中单词的个数

    name = input("Enter file:") if len(name) < 1 : name = "input.txt" fhand = ope ...

  2. 学c语言做练习之​统计文件中字符的个数

    统计文件中字符的个数(采用命令行参数) #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[] ...

  3. JAVA实验--统计文章中单词的个数并排序

    分析: 1)要统计单词的个数,就自己的对文章中单词出现的判断的理解来说是:当出现一个非字母的字符的时候,对前面的一部分字符串归结为单词 2)对于最后要判断字母出现的个数这个问题,我认为应该是要用到ma ...

  4. C语言算法--统计字符串中单词的个数

    #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { int le ...

  5. Python 统计文本中单词的个数

    1.读文件,通过正则匹配 def statisticWord(): line_number = 0 words_dict = {} with open (r'D:\test\test.txt',enc ...

  6. Linux统计文件中单词出现的次数

    grep -E "\b[[:alpha:]]+\b"  /etc/fstab  -o | sort | uniq -c 或 awk '{for(i=1;i<NF;i++){c ...

  7. Scala快速统计文件中特定单词,字符的个数

    val fileContent=Source.fromFile("/home/soyo/桌面/ss5.txt").getLines.mkString(",") ...

  8. sort +awk+uniq 统计文件中出现次数最多的前10个单词

    实例cat logt.log|sort -s -t '-' -k1n |awk '{print $1;}'|uniq -c|sort -k1nr|head -100 统计文件中出现次数最多的前10个单 ...

  9. java统计文本中单词出现的个数

    package com.java_Test; import java.io.File; import java.util.HashMap; import java.util.Iterator; imp ...

随机推荐

  1. Spring Session + Redis实现分布式Session共享

    发表于 2016-09-29 文章目录 1. Maven依赖 2. 配置Filter 3. Spring配置文件 4. 解决Redis云服务Unable to configure Redis to k ...

  2. Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)

    linux 如何显示一个文件的某几行(中间几行) [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1 ...

  3. Python之多进程

    1.Pool的用法 #!/usr/bin/env python # -*- coding: utf-8 -*- ''' @author: Shiyu Huang @contact: huangsy13 ...

  4. Spring 4 官方文档学习(十)数据访问之ORM

    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/orm.html 占位用,暂略.

  5. C 字符串操作函数

    针对C风格的字符串(char p[n];): 长度(strlen).追加(strcat, strncat).比较(strcmp, strncmp).查找(strchr, strstr)等. --带n的 ...

  6. unity3d绘画手册-------地形各个参数解释

    关于Unity3D是什么.我就不多做解释了.由于工作原因,该系列原创教程不定期更新.每月必然有更新.谢谢各位. Unity地形:: 新建地形: <ignore_js_op> 如图在菜单中新 ...

  7. Configurations of Vim/GVim of dsp

    Linux环境写到用户主目录下的.vimrc文件(没有则新建),Windows环境则为GVim安装目录下的_vimrc(没有则新建),内容如下: "分上下两屏 "sp " ...

  8. Jquery实现选项卡功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. php将汉字转换为拼音和得到词语首字母(一)

    <?php /** * 修复二分法查找方法 * 汉字拼音首字母工具类 * 注: 英文的字串:不变返回(包括数字) eg .abc123 => abc123 * 中文字符串:返回拼音首字符 ...

  10. 抽象工厂模式(abstract factory pattern)------创造型模式

    创建型模式:抽象工厂模式 引入概念: 1.产品等级结构:当抽象的产品由具体的工厂生产出不同的产品时,这些归属与同一类的抽象产品就构成了产品等级结构: 2.产品族:具体的工厂可以生产出来的不同产品就构成 ...