shell与awk的脚本运用(一)

敲打

#!/bin/bash#shell声明
b=`ls *.txt`  #列出当前目录下所有log结尾的文件 
for log in $b #循环每一个log文件
do
   b=`awk 'END{print NR}' $log`  #获取当前循环文化最后一行的行号
   for i in `seq $b`   #循环多少次,一行循环一次
   do
     ybs=`cat $log |grep 2222 |awk -v bl=$i -F'|' 'NR==bl{print $12 - $13}'` #grep出当前文件带2222的信息,然后awk定义当前行号为bl,以|为分隔符,然后输出$12减去$13的和
     userid=`cat $log|grep 2222|awk -v bl=$i -F'|' 'NR==bl{print $6}'`    #大致同上,只是输出userid字段
     username=`cat $log|grep 2222|awk -v bl=$i -F'|' 'NR==bl{print $7}'` #大致同上,只是输出username字段
     echo "$userid  $ybs $username" >> /tmp/test/info.txt  #将他们输出到info.txt文件中,这样就获取到了所有符合条件的userid,ybs,username
   done
done
b=`cat /tmp/test/info.txt |sort -k 1,1 -u |awk '{print $1}'` #获取所有玩家去重后的id
for i in $b  #循环每一个玩家
do
   zybs=`cat /tmp/test/info.txt |grep $i |awk -v bl=0 '{bl=bl+$2} END {print bl}'` #计算出每一个玩家花费元宝的总数
   name=`cat /tmp/test/info.txt |grep $i |awk '{print $3}'|uniq`    #通过id查找到玩家的昵称
   echo $i $zybs $name >> /tmp/test/info_2.txt   #将玩家id,昵称,消费元宝总数输出到info_2.txt文件中
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值