shell脚本统计文件中单词的个数
2017-04-25 10:43
1241 查看
shell脚本统计文件中单词的个数
一、方案 http://www.cnblogs.com/youxuguang/p/5917215.html方法一:
(1)cat file|sed 's/[,.:;/!?]/ /g'|awk '{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}' #其中file为要操作的文件,sed中/
/间有一个空格。
(2)sed 's/[,.:;/!?]/ /g' file|awk '{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}' #(1)和(2)效果一致。
方法二:
(1)awk 'BEGIN{RS="[,.:;/!?]"}{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}' file
这里 -F',' 表明每个词用逗号分隔 https://zhidao.baidu.com/question/586302142.html NF其实是number of field, 即整行(或者说record)里面词 (更准确的翻译应该是域)的总数 NF-1 就是倒数第二个词
sed ′s/\%//g‘
s表示替换,\%就表示百分号,s/\%//将%替换为空,最后的g标志表示全部替换
即删除所有的百分号
{for(i=1;i<=NF;i++)a[$i]++;
NF表示单行(记录 )中字段 数,$i表示对应字段 ,假设 文本是 "a b c d a b a" ,a出现3次所以a[a]++执行了3次,a[a]的值增加了3,这个循环完成 后a数组 中为已经读取的行相同内容字段出现次数
for (i in a) 表示 依次迭代a数组 的下标 ,赋值给变量 i,如上例a数组的下标 会是a,b,c,d(顺序是随机的),这四个下标会被按随机顺序赋值给变量 i。
print i"="a[i],打印字段 i和其出现次数a[i]
这样写每读取一行都 会打印 一次已经 重复出现过的字段 统计,为什不只打印 最终 统计呢,像下面这样
awk '{for(i=1;i<=NF;i++)a[$i]++;}
END{for(i in a)print i" = "a[i]}' tongji.txt
二、验证
[root@hehe668 shell]# cat file
hello world,hi girl;how old are you?
where are you from?
how are you?
i am fine!thinks.
and you?
http://www.cnblogs.com/youxuguang/
[root@hehe668 shell]# cat file|sed 's/[,.:;/!?]/ /g'|awk '{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print
i,array[i]}'
com 1
http 1
from 1
www 1
i 1
you 4
hi 1
hello 1
youxuguang 1
and 1
world 1
cnblogs 1
where 1
old 1
how 2
fine 1
am 1
are 3
girl 1
thinks 1
[root@hehe668 shell]# sed 's/[,.:;/!?]/ /g' file|awk '{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}'
com 1
http 1
from 1
www 1
i 1
you 4
hi 1
hello 1
youxuguang 1
and 1
world 1
cnblogs 1
where 1
old 1
how 2
fine 1
am 1
are 3
girl 1
thinks 1
[root@hehe668 shell]# awk 'BEGIN{RS="[,.:;/!?]"}{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}' file
com 1
http 1
from 1
www 1
i 1
you 4
hi 1
hello 1
youxuguang 1
and 1
world 1
cnblogs 1
where 1
old 1
how 2
fine 1
am 1
are 3
girl 1
thinks 1
原文:http://www.cnblogs.com/youxuguang/p/5917215.html
相关文章推荐
- 『转』统计一个日志文件里,单词出现频率的shell脚本
- shell 脚本---统计文件中单词的频率
- 使用shell脚本统计源码文件中的注释行数.(// , /**/)
- 使用shell脚本统计各个模块每个文件代码行数与总行数
- shell 脚本统计当前目录下普通文件个数
- python脚本: 双向统计文件字符、单词数、行数
- C++文件中读单词并统计输出改单词及其个数
- shell脚本统计文件的记录条数
- Shell脚本统计当前目录下目录和文件的数量
- shell 脚本统计文件梳理及获取磁盘占有率
- Shell脚本统计文件行数的8种方法
- shell脚本---统计文件夹下文件类型信息
- Shell脚本对文件中的行、单词、字符进行迭代输出示例
- Linux shell 脚本攻略之统计文件的行数、单词数和字符数
- shell脚本统计出日志文件操作以及其对应的平均时间
- 统计一个文件的单词的个数
- 利用shell脚本统计文件中出现次数最多的IP
- shell脚本命令,统计文件行数
- Shell脚本统计文件行数的8种方法
- 【笔试】45、统计文件中单词的个数