原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://oldboy.blog.51cto.com/2561410/1860164
面试题:请过滤oldboy.log中在device: {}里面出现了多少次oldboy,过滤并统计出来。
考虑到面试题的企业里的通用性,即一行还可能有多个oldboy,即原题改为如下:
[oldboy@oldboy ~]$ cat oldboy.log
oldboy is a linuxer.
device: {
oo
oldboy oldboy oldboy
no sql
this is log
niu niu
}
oldboy
device: {
oldboy oldboy
no sql
this is log
niu niu
}
oldboy oldboy
device: {
oldboy oldboy
no sql
this is log
niu niu
}
device: {
oldboy oldboy
no sql
this is log
niu niu
}
oldboy
因此本题最佳答案,老男孩老师从学生的解答中选举优秀答案如下:
sed -n '/^device/,/\}$/p' oldboy.log|xargs -n 1|sort|grep-w oldboy|wc -l
awk '/device: {/, /}/' oldboy.log|grep -w oldboy|tr" " "\n"|wc -l
awk '/{/,/}/{a+=gsub("oldboy","")}END{print a}' oldboy.log
sed -n '/{/,/}/{/oldboy/p}' oldboy.log | tr ' ' '\n' | wc -l
演示:
[oldboy@oldboy ~]$ sed -n '/^device/,/\}$/p'oldboy.log|xargs -n 1|sort|grep -w oldboy|wc -l
9
[oldboy@oldboy ~]$ awk '/device: {/, /}/' oldboy.log|grep-w oldboy|tr " " "\n"|wc -l
9
[root@littleboy ~]# awk '/{/, /}/{a+=gsub("oldboy","")}END{printa}' oldboy.log
9
[root@littleboy ~]# sed -n '/{/,/}/{/oldboy/p}'oldboy.log|tr ' ' '\n'| wc -l
9
普通人员可以就题论题,高手的解答多考虑通用性,高手和低手的差别就在于此!
本文出自 “老男孩linux培训” 博客,请务必保留此出处http://oldboy.blog.51cto.com/2561410/1860164
转载于:https://blog.51cto.com/wangqh/1862560