话不多说,老板,上硬菜
#!/bin/bash #shell脚本声明
a=`ls log*`#将当前目录下的log开头的日志文件名称存入变量a
for i in $a #开始循环变量a
do #进入循环
echo $i #输出文件名
b=`cat $i|awk -F'|' '{print $NF"-"NR}'`#定义变量b为文件中每一行最后一个以|为分隔符的参数和行号,输出来是这样的:11-1,11是最后一个参数,1是行号
for x in $b #开始循环变量b,循环每一行的最后一个参数和行号
do #进入循环
c=`echo $x|awk -F'-' '{print $1}'` #定义变量c为最后一个参数的值
v=`echo $x|awk -F'-' '{print $2}'` #定义变量v为行号
if [ "$c" == "30" ];then #判断最后一个参数是否为30
pd=`echo $x|awk -F'|' '{print $11}'` #如果条件为真,获取那一行$11的值并存为变量pd
if [[ $pd -gt 10000 ]] #判断pd的值是否大于10000
then
d=`awk -v bl=$v 'NR==bl{print}' $i` #如果大于10000则将那一行的数据存为变量d
echo "$d" >> /tmp/$i.txt #将那一行的数据追加到/tmp/目录下的新文件中,新文件名字为当前循环的日志文件名
elif [[ $pd -lt 9900 ]] #判断pd的值是否小于9900
then
d=`awk -v bl=$v 'NR==bl{print}' $i` #如果小于9900则将那一行的数据存为变量d
echo "$d" >> /tmp/$i.txt #将那一行的数据追加到/tmp/目录下的新文件中,新文件名字为当前循环的日志文件名
fi #结束判断
fi #结束判断
done #结束循环
echo "OK!" #一个文件循环完之后输出OK!然后进入下一次循环
done #循环结束