用shell统计表格数据

今天有个人问了这样一个问题,图片是原题,在这个题的基础上写了一个实现方法

首先日志存到a.txt文本里,如下

Zhangsan|lisi1|0|
Zhangsan|lisi2|10|
Zhangsan|lisi3|6|
Zhangsan|lisi4|0|
Zhangsan|lisi5|0|
Lisi|list1|0|
Lisi|list2|5|

 

代码如下:

#!/bin/sh
awk 'BEGIN{FS="|";};{print $1"`"$2"`"$3}' a.txt|sort -t \` -k 1,1|awk 'BEGIN{FS="`";curline="";name="";renshu=0;no_cishu=0;cishu=0};
{
    if(curline==""){
        name=$1;
        renshu=1;
        no_cishu=1;
        chengong=0;
        cishu=$3;
        curline="name:"name"`renshu:"renshu"`no_cishu:"no_cishu"`cishu:"cishu"`chengong:"chengong;
    }else if(name==$1){
        renshu++;
        if($3==0){
            no_cishu++;
        }else{
            chengong++;
        }
        #print chengong
        cishu+=$3;
    }else{
        curline="name:"name"`renshu:"renshu"`no_cishu:"no_cishu"`cishu:"cishu"`chengong:"chengong;
        print curline;
        name=$1;
        cishu=$3;
        renshu=1;
        no_cishu=1;
        chengong=0;
    }

    };
        END{if(curline!=""){
        curline="name:"name"`renshu:"renshu"`no_cishu:"no_cishu"`cishu:"cishu"`chengong:"chengong;
        print curline;
        }

}'

 结果如下: 

name:Lisi`renshu:2`no_cishu:1`cishu:5`chengong:1
name:Zhangsan`renshu:5`no_cishu:3`cishu:16`chengong:2

 

转载于:https://www.cnblogs.com/fierce/p/7655957.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值