统计单词数目的脚本

来源:互联网 发布:那个软件可以看韩剧 编辑:程序博客网 时间:2024/04/25 03:11

一: 大体思路

比如要统计readme.txt的单词出现的次数

首先将文本中的标点符号换成空格,然后将大写字母换成小写字母(因为The  == the),然后再将多个空格压缩为一个空格

,这时得到的就是一些单词了,单词之间都是用一个空格分开的。然后,用换行替换空格,然后把单词排序,这时得到的

文本可能有重复的单词,最后丢弃重复的单词,并排序数字即可。

 

二: 查看文本  readme.txt

[cyq@localhost Desktop]$ cat readme.txt
Blog:  http://blog.csdn.net/longxibendi

NOTE: Accents have been stripped from words, e.g., 'etude'
does not mark the accent on the initial 'e'.

longxibendi@126.com



三: 需要将文本中的标点符号替换成空格  。我们用

tr 命令   tr   'set1'   'set2'   < readme.txt    用 set2 替换  set1   如下:

 

tr '!?":;/[/]//{}()m,./t/n' ' ' < readme.txt

 

光上面的那一行命令不够,还需要去掉  '  (单引号),所以我们还需要 :

 

 tr "'" " "


四: 将上面的结果的大写字母换成小写字母  ,因为 The  和 the  是一个单词。

tr  命令:

 tr 'A-Z' 'a-z'

 

五: 将上面的结果多个空格,压缩为一个空格 :

 tr -s ' ' 

 

六: 将空格替换成换行:

 tr   ' '  '/n'

 

七: 对单词进行排序:

sort 

 

八: 去掉重复的行(单词)

uniq -c

 

九: 对这时的结果中的数字按照从大到小排序:

sort -rn 

 

-n 按算术值对数字字段排序

-r 按从大到小排序

 

十: 注意,如果你的文本中有其他的特殊符号,比如`  ~,那么需要在第一步中加入`~ ,让空格替换掉他们

 

最终命令及结果如下:

[cyq@localhost Desktop]$ tr '!?"@:;/[/]//{}(),./t/n' ' ' < readme.txt  | tr "'" " "| tr 'A-Z' 'a-z' | tr -s ' '  | tr   ' '  '/n' |sort  |  uniq -c  | sort -rn
      2 the
      2 longxibendi
      2 e
      2 blog
      1 words
      1 stripped
      1 on
      1 note
      1 not
      1 net
      1 initial
      1 http
      1 have
      1 g
      1 fro
      1 etude
      1 does
      1 csdn
      1 co
      1 been
      1 ark
      1 accents
      1 accent
      1 126
[cyq@localhost Desktop]$
也就是这个命令:

 

tr '!`?"@:;/[/]//{}(),./t/n' ' ' < readme.txt  | tr "'" " "| tr 'A-Z' 'a-z' | tr -s ' '  | tr   ' '  '/n' |sort  |  uniq -c  | sort -rn

 

提示:如果想得到最大,最小值,用tail  head  等命令再重定向过滤一下。比如

[cyq@localhost Desktop]$ tr '!?"@:;/[/]//{}()m,./t/n' ' ' < readme.txt  | tr "'" " "| tr 'A-Z' 'a-z' | tr -s ' '  | tr   ' '  '/n' |sort  |  uniq -c  | sort -rn |head -1 | awk '{print $1}'
2
[cyq@localhost Desktop]$

 

这个是得到最大值

 

参考:  《精通shell编程》 (第二版)

 

 

声明:本文档可以随意更改,但必须署名原作者

                    

作者:凤凰舞者 qq:578989855

 

 

 

 

 

原创粉丝点击