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