grep 、sed、awk被称为linux中的"三剑客"。

  grep 更适合单纯的查找或匹配文本

  sed  更适合编辑匹配到的文本

  awk  更适合格式化文本,对文本进行较复杂格式处理


AWK是一种优良的文本处理工具

  awk是linux中处理文本的强大工具,或者说是一种专门处理字符串的语言,它有自己的编码格式。awk的强大之处还在于能生成强大的格式化报告

  使用方法   : awk '{pattern + action}' {filenames}

  

  尽管操作可能会很复杂,但语法总是这样,programe 又分为 pattern 和 action ,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。


  案例分析

  数据链接 https://www.cnblogs.com/SliverLee/protected/p/11868443.html     密码 :123456

  现有数据如下,求出Reason=1000时,Lefts字段值汇总。

  



  1、从所有数据中,利用grep先过滤出 Reason=1000部分。

  [root@localhost tmp]# more demotest.txt | grep Reason=1000

  


  2、接下来就是awk的功能了

  AWK常用参数

      ARGV               命令行参数排列
      ENVIRON            支持队列中系统环境变量的使用
      FILENAME           awk浏览的文件名
      FNR                浏览文件的记录数
      FS                 设置输入域分隔符,等价于命令行 -F选项
      NF                 浏览记录的域的个数
      NR                 已读的记录数
      OFS                输出域分隔符
      ORS                输出记录分隔符
      RS                 控制记录分隔符
      $0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。

  3、print和printf
    print 用于简单的输出,如果需要格式化的输出和打印,则需要选择printf.
    如下例子,打印数据中的第一列 $1即为第一列,使用的时候需要注意,{  },花括号内部print前后各有一个空格
      

  4、分隔符 :在awk中,分隔符默认为空格,但是我们可以利用  -F 这个参数自定义分隔符号,
    

    默认空格分隔符

    

    修改分隔符为 “  -  ”,对比默认空格,很明显发现不同。

    

    如根据多个分隔符进行分割呢?可以两次awk,但是我们可以一次告诉awk我们所有的分隔符,如-和|这两个,用[]包起来,想根据更多也可以继续加。

    


   5、计算

    根据前面的几个内容,我离最终的目的越来越近了,首先我先获取到Lefts这个列,分隔符为多个“-:,=”,

     

   


    当Lefts值大于2000时,才输出

     


 

    BEGIN与END

    特殊模式 BEGIN 用于匹配第一个输入文件的第一行之前的位置, END 则用于匹配处理过的最后一个文件的最后一行之后的位置。这个程序使用 BEGIN 来输出一个标题:

     


     下面求和

     

     结合END,计算如下

     

最后结合之前所有的知识点总结一下:

      

最新文章

  1. NDK开发历程(一):android native code的调试方法
  2. 如何使用查尔斯代理抓取https请求
  3. jquery自定义函数的多种方法
  4. cat常用参数详解
  5. oracle-分页查询方案
  6. SparkStreaming+Flume出现ERROR ReceiverTracker: Deregistered receiver for stream 0: Error starting receiver 0 - org.jboss.netty.channel.ChannelException
  7. popen&pclose管道方式操作shell命令
  8. google 开放I/O源码
  9. Enze fourth day(循环语句 一)
  10. 利用WebBrowser彻底解决Web打印问题
  11. nyoj_253:LK的旅行(旋转卡壳入门)
  12. Java基础点滴
  13. Activity 之使用
  14. java Web三大组件--过滤器
  15. OE1、OE2、ON1、ON2路由有什么区别?
  16. Tensorflow 的saved_model模块学习
  17. 单元测试,模拟用户Get登陆,并携带登录后的token访问接口
  18. bootstrap fileinput 文件上传
  19. 在word中输入任意角度旋转图片
  20. spring boot 2.0 源码分析(四)

热门文章

  1. c#winform多线程感想
  2. 关于Python中正则使用findall和分组的一个坑
  3. Python中的基本类型简介
  4. 怎奈风云多变换,骚完一波还一波,记PHP mongodb驱动的2019年11月用法
  5. Java集合总结(一):列表和队列
  6. CF917D Stranger Trees【矩阵树定理,高斯消元】
  7. 使用Flask设计带认证token的RESTful API接口
  8. C语言中内存对齐规则讨论(struct)
  9. chrome jssip
  10. vue中书写JSX一些坑-特殊属性名