背 景
由于项目没有接入Kibana日志查看工具,在docker里查看并筛选特定的请求体是非常困难的,比如我做性能测试 no gui测试的时候,发现有些请求报错了,报错信息提示字段缺失,我就要筛选这个请求是怎样的,就要要筛选哪些请求体没有包含xx字段。这个时候就异常麻烦了
方案
起初用了awk去做解析,但awk去判断含有某个字段还好用一点,如果判断没有包含某个字段,写起来非常麻烦,最后选择最简单的IFS去做字符切割。
实 现
先筛选出日志,因为日志多达上百万行数据。
more xxx.log | grep -A 4 “请求体:{” >>test.log
脚本如下:
#!/bin/bash
string=`cat test.log`
#对IFS变量 进行替换处理
OLD_IFS="$IFS"
IFS="--"
for var in $string
do
strB="tskCntn"
strC="itemId"
strD="19:"
if [[ $var =~ $strB ]]
then
echo "">222.txt
else
if [[ $var =~ $strD ]]
then
var1=$var
fi
if [[ $var =~ $strC ]]
then
echo $var1
echo $var
fi
fi
done
IFS="$OLD_IFS"
最后打印出来的都是没有包含字段的请求体数据。