shell学习之awk篇

本文主要介绍awk命令的学习,包括其基本语法、关键字的应用,通过具体的示例展示awk如何处理数据文件,如筛选特定行、打印指定内容。文中推荐了《The awk programming language》作为学习资料。
摘要由CSDN通过智能技术生成

    网上关于awk的博客说的也是够多的了,之所以再写有两点原因:1 大部分博文说的不够全面  2 作为自己系统学习shell的一个记载。

    学习过程中看的是《The awk programming language》讲的非常详细,有兴趣的同学可以在这里下载。


   0. 以下示例说明均以此数据作为依据,文件名为countries

   USSR	        8649	275	Asia
   Canada	3852	25	North America
   China	3705	1032	Asia
   USA	        3615	237	North America
   Brazil	3286	134	South America
   India	1267	746	Asia
   Mexico	762	78	North America
   France	211	55	Europe
   Japan	144	120	Asia
   Germany	96	61	Europe
   England	94	56	Europe

    1. awk语法

        awk的语法非常简单即:awk 'pattern {action}' file  其中pattern是每一行对应的匹配模式,也就是说只有当前行满足pattern模式,才会执行里面的action动作。action则是具体想要进行什么操作,比如数据计算 写文件 输出等。file则是要处理的数据文件,可以是一个或多个。当没有时,系统默认用户从命令行输入,直到遇到结束符。

        比如如果我想把countries里的包含“America”这个字符串的行都输出,可以这样做:

    awk '$0 ~ /America/ {print $0}' countries 

        

        上面语句中$0代表整行 ‘~’ 表示包含,/name/ 则表示包含“name”的字符串。

         当然pattern并不是必须的,action也不是只能有一个。像这种语法格式也是正确的 awk ‘{acion} pattern {action}’。当没有pattern时,表示当前输入行总是满足条件;有多个pattern {action}模式时,awk 会在当前行执行完一组pattern {action} 模式后再执行下一组。

         比如我想把countries中所有行都打印出来:      

         awk ‘{print $0}’ countries                         # 没有action,默认所有行都匹配

          

   2. awk 中的关键字

       这里只例举一些常用的关键字,不常用到的就不一一列举了。

       

        下面通过几个例子说明各个关键字的用处

         1)将countries中的所有数据打印出,并在开头打印出每个字段的意思    

    awk 'BEGIN {print "COUNTRY","","AREA"," ","POP","  ","CONTINENT"} {print }' countries
        

       可以理解BEGIN的意思了吧?  ps: 上面语句中{print}若后面没有参数则默认打印整行

        2)将最后一行打印出来


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值