常用awk脚本

本文介绍了一个具体的awk脚本实例,演示了如何根据文件中特定列的值进行分组并计算各组的总和。通过这个例子,读者可以了解awk的基本用法,包括变量赋值、条件判断及流程控制等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BEGIN{
    sum1=0;
    sum2=0;
    cnt1=0;
    cnt2=0;
}
{
    if ($2 == 1) {
        sum1=sum1+$1;
        cnt1++;
    } else if ($2 == 2) {
        sum2=sum2+$1;
        cnt2++;
    }   
}
END {
    print cnt1"  "cnt2;
    print sum1"  "sum2;
}

说明:按照某列的值进行分组求和。


注意:

  1. awk脚本中中间代码块本身就是是对文件中每行都进行处理,需要使用while(i<NF)进行重复判断!
  2. 此文件命名为abc.awk 则执行方式是awk -f abc.awk data
  3. 如果awk文件不复杂,建议直接用awk命令行执行,如
  4. awk -F ' ' 'BEGIN{ sum1=0;sum2=0;cnt1=0;cnt2=0;} {if($2==1) { sum1=sum1+$1;} else if ($2==2) { sum2=sum2+$1; } } END{ print sum1" "sum2;}' data


awk脚本中常量

NF 当前记录的字段数

NR


awk流程控制语句,从语法上可以看到,与c语言是一样的。有了这些语句,其实很多shell程序都可以交给awk,而且性能是非常快。

比较  time (awk 'BEGIN{ total=0;for(i=0;i<=10000;i++){total+=i;}print total;}') 和  time(total=0;for i in $(seq 10000);do total=$(($total+i));done;echo $total;)


参考

http://www.cnblogs.com/chengmo/archive/2010/10/04/1842073.html 

http://www.cnblogs.com/mywolrd/archive/2012/04/27/2472916.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值