shell脚本 批量查询文件中每个关键字的匹配数量

931 阅读1分钟

场景:根据url确定哪些接口不再使用

gateway日志 中包含了所有服务url请求,可以查看近一月的日志中是否有打印。

#!/bin/bash
#第一个参数传入要查的文件名 可以批量 例:2021-07*.log
filename=$1
#关键字数组 空格或者换行隔开
url_array=(url1
url2
url3
url4
...
)


for url in ${url_array[@]}
do
        #循环执行 grep指令 压缩包用zgrep
        #指令根据自己需求更换,我这只需要查是否存在所以统计数量 grep -c 分别统计每个文件的数量,使用 | wc -l 所有文件数量聚合
        count=`eval "grep $url $filename | wc -l"`
        echo $url" : "$count
done

执行

#注意这里参数加"" 不然参数只接受第一个匹配的
./test.sh "2021-07*.log"

结果

url1 : 12
url2 : 0
url3 : 5
url4 : 0
...

结论

当url结果对应为0代表日志中没有,很久没人使用,是否去除还需进一步的确认。