统计词频
写一个bash脚本以统计一个文本文件words.txt中每位词组出现的频度。
为了简单起见,你可以假定:
示例:
假定words.txt内容如下:
thedayissunnythethe
thesunnyisis
你的脚本应该输出(以词频倒序排列):
the4
is3
sunny2
day1
说明:
不要担忧词频相同的词组的排序问题linux下c统计文件词频,每位词组出现的频度都是惟一的。
解答:
#!/bin/bash
catwords.txt|xargs-n1|sort|uniq-c|sort-nr|awk'{print$2,$1}'
#知识点xargssortuniqawk
知识点
xargs
xargs是给命令传递参数的一个过滤器linux下c统计文件词频,也是组合多个命令的一个工具。
xargs可以将管线或标准输入(stdin)数据转换成命令行参数,也才能从文件的输出中读取数据。
xargs也可以将单行或多行文本输入转换为其他格式,比如多行变单行,单行变多行。
xargs默认的命令是echo,这意味着通过管路传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格代替。
xargs是一个强有力的命令红旗linux官网,它就能捕获一个命令的输出,然后传递给另外一个命令。
之所以能用到这个命令,关键是因为好多命令不支持|管线来传递参数,而日常工作中有有这个必要linux查看进程,所以就有了xargs命令,比如:
find/sbin-perm+700|ls-l#这个命令是错误的
find/sbin-perm+700|xargsls-l#这样才是正确的
xargs通常是和管路一起使用。
命令格式:
somecommand|xargs-itemcommand
参数:
sort
Linuxsort命令用于将文本文件内容加以排序。
sort可针对文本文件的内容,以行为单位来排序。
句型
sort[-bcdfimMnr][-o][-t][+-][--help][--verison][文件]
参数说明:
uniq
Linuxuniq命令用于检测及删掉文本文件中重复出现的行列,通常与sort命令结合使用。
uniq可检测文本文件中重复出现的行列。
句型
uniq[-cdu][-f][-s][-w][--help][--version][输入文件][输出文件]
参数: