Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1734058
  • 博文数量: 150
  • 博客积分: 660
  • 博客等级: 上士
  • 技术积分: 2480
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-08 11:39
文章分类

全部博文(150)

文章存档

2019年(4)

2018年(36)

2017年(53)

2016年(7)

2015年(3)

2014年(3)

2013年(27)

2012年(2)

2011年(1)

2006年(1)

2005年(13)

分类: 系统运维

2017-09-29 16:17:36


遇到的问题

awk 分析格式化的文件非常有效,最近遇到一种情况,每个格式文件第一行都有字段名称,从第二行开始才是具体数据,只是每月该类型文件字段的顺序都会有调整,导致每次分析时,都要调整awk的脚本,为了解决该问题,考虑先根据第一行字段名称找到需要的字段并记录该字段的位置序号一次放到一系列变量中,然后从第二行开始按照变量记录的位置进行统计分析。 

文件字段示例

清单月份,号码,受理时间,激活时间,客户名称,套餐名称,套餐价值,账目类型,本地协销人,本地协销人工号,付费类型,状态,计费接入号,卡类型,流量M,本月收入元,本年收入元,最早欠费账期,累计欠费金额,前向流量池号,后向流量池号,折扣,基本套餐费,超出套餐费,ICCID

示例脚本

awk -F, 'BEGIN{print "流量池","数量","流量合计","套餐合计","超套餐合计"}\
   {if(NR==1){for(i=1;i<=NF;i++){if($i=="号码")hm=i;\
   if($i=="流量M")ll=i;if($i=="本月收入元")sr=i;\
   if($i=="超出套餐费")cc=i;if($i=="前向流量池号")qx=i}} \
   else{llc[$qx]=$qx;sl[$qx]++;llhj[$qx]+=$ll;tchj[$qx]+=$sr;ctchj[$qx]+=$cc}}\
   END{for(i in llc)print llc[i],sl[i],llhj[i],tchj[i],ctchj[i]}' \
   somefile.csv


阅读(1895) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~