日志筛选
数据源::源日志
日志行数据格式如下
10.xx.xx.111 - - [11/Jan/2022:18:34:44 +0800] xxx.com "POST /xx/xx/config HTTP/1.1" "200" 8716 "-" "Mozilla/5.0 (Linux; U; Android 11; ko-kr; SM-N981N Build/RP1A.200720.012) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
识别数据源中的筛选的属性
第8个位置为我们需要筛选的 url path
对应 awk '{print $8}'
如果日志格式不同 或 需要筛选其他列,可自行调整列数,即 将 8 调整为需要列数便可。
从log文件筛选
#!/bin/bash
file=access.log
cat ${file} | awk '{print $8}' | while read line
do
echo -e ${line%?app_id*} >> mysql.txt
done
关键命令 cat
awk
echo
while
从一批log.gz文件筛选
for loggz in {access.log-20220101.gz,access.log-20220102.gz}
do
zcat ${loggz} | awk '{print $8}' | while read line
do
echo -e ${line%?app_id*} >> mysql.txt
done
done
关键命令 zcat
awk
echo
while
for
当然,如果集群日志系统建设的比较完善的话,上述系列操作就没必要了。
了解更多Linux基础:目录索引