shell与awk的脚本运用(二)

话不多说,老板,上硬菜偷笑


#!/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 #循环结束


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值