grep 'http:\\127.0.0.1:8080\index.jsp' request.log | wc -l
使用这个命令查出文本中的单词出现频率按照由高到底排序
cat words.txt |tr -cs "[a-z][A-Z]" "[\012*]"|tr A-Z a-z|sort|uniq -c|sort -k1nr -k2|head -10
但是有时我们想查找出某一个单词的出现频率这时我们可以使用如下几个命令
文件名称:file 查找单词名称:word
*** 作命令:
(1)more file | grep -o word | wc -l
(2)cat file | grep -o word | wc -l
(3) grep -o test word | wc -l
如果这些还是不能满足需求,那只能写linux脚本进行实现了。可以使用awk哦
1.命令格式:
wc [选项]文件...
2.命令功能:
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。
3.命令参数:
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
--help 显示帮助信息
--version 显示版本信息
4.值得注意的是,-c,c应该是count的缩写,统计的是文件的字节数,而不是通常我们想要的“字数”,字数的统计应该用-w,所以上面提到那个问题,可以怎么做呢?wc并没有提供给我们统计特定一个单词的选项,只能查找呗~所以结合grep就可以这样简单写:
grep cout hello.cpp | wc -l
5.上面命令通过管道串联起来,意思是,查找hello.cpp里所有出现过cout的行,统计行数。
但是,问题来了,如果不只想统计行数,而是想精确到个数(一行里可能会出现多次),应该怎么办呢?
这就是grep的作用了2,-o选项(only的意思)表示只选中那些匹配的地方,比如a cout yes, and b cout no.,匹配cout,结果是两行,每行一个cout。所以要想统计出现次数的话,简单加一个选项就好了:
1、统计某个字符的个数,以a为例grep -o a urifleawk -F "" '{for(i=1i<=NF++i) if($i=="a") ++sum}END{print sum}' urfile #-F ""中间必须要有空格 "a"必须使用双引号,字符串 awk -F "" '{for(i=1i<=NFi++)a[$i]++}END{for(j in a) if(j=="c") print a[j]}' urfile#2、储存在变量里echo "0001111" |tr -cd 1 |wc -c如果有时间可以看看《Linux就该这么学》,里面有各种Linux相关知识欢迎分享,转载请注明来源:内存溢出
评论列表(0条)