![[Linux] shell中for循环grep正则统计指定关键字,第1张 [Linux] shell中for循环grep正则统计指定关键字,第1张](/aiimages/%5BLinux%5D+shell%E4%B8%ADfor%E5%BE%AA%E7%8E%AFgrep%E6%AD%A3%E5%88%99%E7%BB%9F%E8%AE%A1%E6%8C%87%E5%AE%9A%E5%85%B3%E9%94%AE%E5%AD%97.png)
需求是统计某个业务的访问个数日志服务器上的目录结构是如下,搜索最近7天的指定关键字数据,并排重统计个数:
drwxr-xr-x 2 root root 4096 Nov 15 08:00 2019-11-15drwxr-xr-x 16 1617 1718 1819 1920 2021 2122 22[root@mail tmp]# ll /data1/mailLog/app/kafka/22/total 5708872-rw-r--r-- 1 root root 4847545594 Nov 22 2019 API-mail-sina-com-cn.log
for循环的一行表示形式for ((i=15;i<=21;i++));do xxx;done
while循环的一行表示 while true;do xxx;done
获取当前年月`date +%Y-%m`
grep -oP只显示正则匹配到的内容
uniq|sort -u是去重
for ((i=15;i<=21;i++));do cat `date +%Y-%m-$i`/API-mail-sina-com-cn.log|grep -oP "appID=2026078627&uID=\d+"|uniq|sort -u >/tmp/`date +%Y-%m-$i`.androID.log;done
把匹配到的日志去重放入了/tmp/2019-11-22.androID.log
wc -l *.androID.log 87851 78686 76190 90938 91705 91388 91796 21.androID.log
如果有不同的关键字,就多加几个grep,类似下面这个
for ((i=15;i<=21;i++));do cat `date +%Y-%m-$i`/API-mail-sina-com-cn.log|grep "2026078627"|grep "active_clIEnt"|grep -oP "device_ID=[^&]+|uniq|sort -u >/tmp/`date +%Y-%m-$i`.androID.device.log;done
总结
以上是内存溢出为你收集整理的[Linux] shell中for循环grep正则统计指定关键字全部内容,希望文章能够帮你解决[Linux] shell中for循环grep正则统计指定关键字所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)