日志筛选

数据源::源日志

日志行数据格式如下

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"


识别数据源中的筛选的属性


Linux基础:shell::日志筛选 #私藏项目实操分享#_linux

第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基础:目录索引​