学习awk

awk [-F  field-separator] 'script' file(s)
awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",-F ':' 自定义间隔符':'


假设有数据文件city_code.txt数据如下

jilin:Liao_Yuan_Shi:吉林省-辽源市:0
guizhou:Bi_Jie_Di_Qu:贵州省-毕节地区:206
ningxia:Yin_Chuan_Shi:宁夏回族自治区-银川市:360
hubei:Wu_Han_Shi:湖北省-武汉市:218
anhui:Huang_Shan_Shi:安徽省-黄山市:252
……

打印汉字城市名:
awk -F ':' '{print $3}' city_code.txt |awk -F '-' '{print $2}'

首先用 awk -F ':' '{print $3}' city_code.txt 以":"间隔打印出类似
吉林省-辽源市
贵州省-毕节地区
宁夏回族自治区-银川市
湖北省-武汉市
安徽省-黄山市
……
再用awk -F '-' '{print $2}'以"-"打印出市名

辽源市
毕节地区
银川市
武汉市
黄山市
……


打印文件有用Tab间隔开

head -5 city_code.txt|awk -F ':' 'BEGIN{print "province\tcity\tcity_code"}{print $1"\t"$2"\t"$4}END{print "that is all" }'

统计编号的和
awk -F ':' 'BEGIN{sum=0}{sum +=$4} END{print sum }' city_code.txt
执行顺序是,首先运行BEGIN的内容初始化sum,然后读入每行数据,去$4也就是城市编号加到sum中 读完所有数据以后打印出sum

以上两个综合在一起
head -5 city_code.txt|awk -F ':' 'BEGIN{sum=0;print "province\tcity\tcity_code"}{sum+=$4;print $1"\t"$2"\t"$4}END{print "that is all,sum ="sum }'

打印出安徽省所有市
awk '/anhui/' city_code.txt

打印出安徽省的所有市,并统计编号和

awk -F ':' 'BEGIN{sum=0;print "province\tcity\tcity_code"}/anhui/{sum+=$4;print $1"\t"$2"\t"$4}END{print "that is all,sum ="sum }' city_code.txt


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值