背景:在指定目录下,该目录下有上百个日志文件,这些文件以.log结尾
需求:遍历这些日志文件,对每个日志文件进行grep筛选,筛选出包含
name=xxx
和"server_port":"8088"
的内容,并写入到out.log文件中,这些日志文件顺序筛选,后面的日志文件追加到out.log文件中
编辑一个脚本:
vim process_logs.sh
脚本内容如下:
#!/bin/bashfor logfile in /var/log/*.log; dofilename=$(basename "$logfile")echo "$filename" "--->filter start" >> ./out.loggrep 'name=xxx' "$logfile" | grep '"server_port":"8088"' >> ./out.logecho "$filename" "--->filter end" >> ./out.logecho >> ./out.log
done
注释:
#!/bin/bash# 遍历log目录下的所有日志文件
for logfile in /var/log/*.log; do# 使用basename获取文件名filename=$(basename "$logfile")# 写入指定字符串echo "$filename" "--->filter start" >> ./out.log# 使用grep筛选包含"name=xxx"并且"server_port":"8088"的内容并追加到out.log文件中grep 'name=xxx' "$logfile" | grep '"server_port":"8088"' >> ./out.log# 写入指定字符串echo "$filename" "--->filter end" >> ./out.log# 写入空行echo >> ./out.log
done
执行:
bash process_logs.sh