码迷,mamicode.com
首页 > 其他好文 > 详细

每日一题--3-求一个文件里面指定字符出现的次数

时间:2018-10-09 20:00:47      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:$0   表达   字符   函数   里程碑   返回   sub   完整   code   

求一个文件里面指定字符出现的次数:

我们使用/ect/passwd文件来模拟,我们取出文件中:出现的次数

[root@web01-7 /]# cp /etc/passwd /tmp/
[root@web01-7 /]# awk ‘{Num=gsub(/:/,":",$0);sum = sum + Num}END{print sum}‘ /tmp/passwd 
156

1,第一个里程碑

awk中有个替换函数gsub这个函数可以替换指定字符串,并返回替换操作的次数,我们可以使用这个来来文件中的":"替换成":"然后让他返回替换了多少次,我们就能统计出来出现了多少次

2,第二个里程碑

了解gsub的语法格式:
替换:gsub(/要替换的字符串/,"替换成的字符串",在哪个地方替换)
替换的次数:Num = gsub(/要替换的字符串/,"替换成的字符串",在哪个地方替换)

3,第三个里程碑

了解了上面两个我们就能完整上述的那个表达式了,为什么要在最后面输出END呢?因为我们对sum进行了累加,再有在末行模式才能统计出来出现的所有次数

4,优化上述表达式

[root@web01-7 /]# awk ‘{sum = sum + gsub(/:/,"",$0)}END{print sum}‘ /tmp/passwd  
156

总结

1,awk中的gsub替换所有的符合的字符串,相当于sed的“s###g”
2,awk中的sub只替换第一次匹配的字符串,相当于sed的“s###”

如果各位大佬有更好的办法请指点

每日一题--3-求一个文件里面指定字符出现的次数

标签:$0   表达   字符   函数   里程碑   返回   sub   完整   code   

原文地址:http://blog.51cto.com/13447608/2296468

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!