zoukankan      html  css  js  c++  java
  • awk 练习题

    将以下文本以inode为标记,对inode相同的counts进行累加,并且统计出同一inode中,beginnumber的最小值和endnumber的最大值。

    inode|beginnumber|endnumber|counts|
    106|3363120000|3363129999|10000|
    106|3368560000|3368579999|20000|
    310|3337000000|3337000100|101|
    310|3342950000|3342959999|10000|
    310|3362120960|3362120961|2|
    311|3313460102|3313469999|9898|
    311|3313470000|3313499999|30000|
    311|3362120962|3362120963|2|
    

    输出的结果格式为:

    310|3337000000|3362120961|10103|  
    311|3313460102|3362120963|39900|  
    106|3363120000|3368579999|30000|
    

    解答:

    awk -F'|' -v OFS='|' '/^[0-9]/{inode[$1]++; if(!bn[$1]){bn[$1]=$2}else if(bn[$1]>$2){bn[$1]=$2}; if(en[$1]<$3)en[$1]=$3;cnt[$1]+=$(NF-1)} END{for(i in inode)print i,bn[i],en[i],cnt[i]}' inputfile
    
    [root@centos7 ~]# cat t8 
    inode|beginnumber|endnumber|counts|
    106|3363120000|3363129999|10000|
    106|3368560000|3368579999|20000|
    310|3337000000|3337000100|101|
    310|3342950000|3342959999|10000|
    310|3362120960|3362120961|2|
    311|3313460102|3313469999|9898|
    311|3313470000|3313499999|30000|
    311|3362120962|3362120963|2|
    [root@centos7 ~]# awk -F'|' -v OFS='|' '/^[0-9]/{ 
    inode[$1]++ 
    ;if(!bn[$1]){bn[$1]=$2}else if(bn[$1]>$2){bn[$1]=$2} 
    ;if(en[$1]<$3)en[$1]=$3;cnt[$1]+=$(NF-1)} 
    END{for(i in inode)print i,bn[i],en[i],cnt[i]}' t8
    310|3337000000|3362120961|10103
    311|3313460102|3362120963|39900
    106|3363120000|3368579999|30000
    
    书山有路勤为径,学海无涯苦作舟
  • 相关阅读:
    Single Image Haze Removal Using Dark Channel Prior翻译
    android的单元测试
    HTML&JS笔记(1)
    动手学Javascript(1)——PopStar
    Cocos2d-x教程第(11)讲-利用遮罩(蒙版)CCLayerColor制作新手引导界面(上)
    硬币翻转倍数递增试算
    java泛型接口详解
    1352
    大话设计模式之——简单工厂模式
    iOS自适应行高方法及问题
  • 原文地址:https://www.cnblogs.com/haona_li/p/10262513.html
Copyright © 2011-2022 走看看