zoukankan      html  css  js  c++  java
  • shell 中awk、if while 例子

    1、if while命令写在一行中
    while read a b;do echo $a $b;done < aa.txt
    12 13 14
    cat aa.txt
    12 13 14
    if [[ $i -eq 0 || $i -eq 2 ]] ;then env=10.79.40.146:80 ;else env=10.79.40.147:80 ; fi
    2、awk 合并两个文件
    account cdr
    cat account
    张三|000001
    李四|000002
    cat cdr
    000001|10
    000001|20
    000002|30
    000002|15
    合并后的结果为
    张三|000001|10
    张三|000001|20
    李四|000002|30
    李四|000002|15
    命令:awk -F | 'NR==FNR{a[$2]=$0;next}{print a[$1]"|"$2}'
    解释:
    NR (Number of Record) 表示awk执行所读取的数据行数
    FNR (Number of Record in File) 跟NR类似,不同是awk每打开一个新文件,FNR便从0开始重新累计
    3、while拼接文件
    #将afile文件中的前三行与bfile中的前四行拼接在一起
    while read -u3 i && read -u4 j;do
    echo $i $j
    done 3<afile 4<bfile
    4、awk的分组求和
    cat file.txt
    机构名,姓名,状态,金额
    江南 雷明凯 失败 420
    江南 雷明勋 成功 300
    江南 苟秀华 成功 60
    白塔 苟应平 失败 360
    白塔 苟应军 失败 180
    水观 苟应辉 成功 240
    水观 苟应东 失败 60
    水观 苟应训 失败 120
    水观 苟应勋 成功 360
    石滩 侯应明 失败 300
    石滩 侯兴文 成功 360
    石滩 侯兴华 成功 120
    要求:
    1、全部金额计数和求和;
    2、按状态分类计数和求和;
    3、按机构名和状态计数和求和
    结果如下:
    12 2880 
    成功 6 1440
    失败 6 1440
    江南 成功 2 360
    江南 失败 1 420
    白塔 失败 2 540
    水观 成功 2 600
    水观 失败 2 180
    石滩 成功 2 480
    石滩 失败 1 300
    命令:
    #!/bin/bash
    echo "全部金额计数和求和"
    awk '{if(NR!=1){total+=$4;sum++}}END{print total, sum}' file.txt
    echo "按照状态计数和求和"
    awk '{if(NR!=1){a[$3]+=$4;b[$3]++}}END{for (i in a){print i,a[i],b[i]}}' file.txt
    echo "按照机构和状态计数和求和"
    #NR!=1 跳过header,a[$1" "$3] 在1 3 之间加入空格,方便最后的排序
    awk '{if(NR!=1){a[$1" "$3]+=$4;b[$1" "$3]++}}END{for (i in a){print i,a[i],b[i]}}' file.txt|sort -k 4

  • 相关阅读:
    Hibernate Tomcat JNDI数据源配置(转)
    使用Spring的@Autowired 实现DAO, Service, Controller三层的注入(转)
    丢弃重口味的xml配置--spring4用groovy配置bean(转)
    Java 对象的生命周期
    设计模式学习总结(23) 中介者模式
    WebSocket初探
    设计模式 之 建造者
    谈谈CListCtrl 扩展风格设置方法-SetExtendedStyle和ModifyStyleEx 比較
    linux signal 处理
    UVA 1546
  • 原文地址:https://www.cnblogs.com/ggbond1988/p/4797279.html
Copyright © 2011-2022 走看看