shell与awk的脚本运用(三)

要求:取出log中最后以GG结尾,并且下一行的ip字段是否包含aaaa,这两行必须是同一个人,然后将这两行的指定信息输出到最终文件中。

 

 

#!/bin/bash
#脚本声明

file=`ls *.LOG`
#列出所有log文件
a=0
#定义变量a的值为0,待会作为下一行的行号

for log in $file
#循环每一个log文件
do
#进入循环
   line_num=`awk 'END{print NR}' $log`
   #获取当前log文件最后一行的行号
   for i in `seq $line_num`
   #循环每一行,从第一行开始
   do
   #进入循环
      a=$(expr $i + 1) 
      #a的值为当前行号加1,也就是下一行的行号
      zuihou=`cat $log|awk -v bl=$i -F'|' 'NR==bl{print $15}'`
      #定义当前行的最后一个值
      ip=`cat $log|awk -v bl=$i -F'|' 'NR==bl{print $12}'|awk -F':' '{print $3}'`
      #定义当前行的ip
      name=`cat $log|awk -v bl=$i -F'|' 'NR==bl{print $6}'`
      #定义当前行的姓名值
      input_line_1=`cat $log|awk -v bl=$i -F'|' 'NR==bl{print $6,$7}'`
      #定义待会要输入到最终文件的信息

      if [[ $zuihou -eq GG ]];then
        #判断当前行的最后一个值是不是等于GG

        if [[ $ip != "aaaa" ]];then
           #如果是,再判断ip那一列是不是没有aaaa
           next_line=`cat $log|awk -v bl=$a 'NR==bl{print $0}'`
           #定义当前行的下一行的整行数据
           input_line_2=`cat $log|awk -v bl=$a -F'|' 'NR==bl{print $6,$7}'`
           #定义下一行要输出到最终文件的数据
           name_2=`cat $log|awk -v bl=$a -F'|' 'NR==bl{print $6}'`
           #定义下一行的姓名值
       value=`echo $next_line|grep 'aaaa'`    
           #定义当前行是否包含aaaa,如果是输出的整行,如果不是则是空值   

           if [[ ! $value ]];then
           # 进行判断,判断value是不是空值
                echo $next_line
                #输出下一行整行(用来检查脚本有误问题)
            echo 'pass................'
                #输出pass,结束判断
           elif [[ $name == $name_2 ]];then
           #如果不是空值,判断当前行和下一行的姓名是否一样
                echo "input................."
                #输出input,然后开始写入
                echo $i >> /tmp/test/zuizhong.txt
                #输出行号到zuizhong.txt文件中,用来检查脚本是否正常
                echo $input_line_1 >> /tmp/test/zuizhong.txt
                #输出当前行所需字段到zuizhong.txt中
                echo $input_line_2 >> /tmp/test/zuizhong.txt
                #输出下一行所需字段到zuizhong.txt中
           fi
           #结束判断
      fi
      #结束判断
    fi
    #结束判断
   done
   #本次循环完成
done
#循环完成
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值