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,计算如下

     

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

      

AWK---linux系统三剑客(三)的更多相关文章

  1. Linux系统(三)系统基础扫盲大全

    序言 如果大家都爱装逼,一般会偏爱使用安装最小化的liunx系统,那么你的系统就不带图形化的桌面功能,这样对于一个想装B的初学者来说,Liunx就是黑漆马虎,一望无际的黑屏,黑屏,如何快速的对liun ...

  2. linux系统的三种网络连接模式

    VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1 ...

  3. 从零开始学Linux系统(三)安装CentOS-7及软件包管理操作

    推荐博文: VirtualBox安装CentOS7步骤详解: https://my.oschina.net/AaronDMC/blog/840753 如何安装CentOS7字符界面 :http://b ...

  4. 第四篇、linux系统文件属性三

    一.linux文件属性之文件权限体系介绍 二.linux中连接介绍 三.软连接 四.图解 五文件删除原理 主要内容

  5. Linux系统学习 三、网络基础—虚拟机网络配置

    Linux网络基础 Linux的ip地址配置 Linux网络配置文件 常用网络命令 虚拟机网络参数配置 1.配置Linux的IP地址 首先配置一个IP地址,让IP生效. ifconfig查看当前网络配 ...

  6. Linux系统下安装jdk1.8

    JDK安装分为两种方式  一种是解压tar.gz配置安装, 一种是rpm安装,我这里是tar.gz安装方式 一.首先在oracle官方网下载jdk,网址如下:http://www.oracle.com ...

  7. Linux系统优势六大方面

    Linux系统越来越受到电脑用户的欢迎,于是很多人开始学习Linux.Linux系统之所以会成为目前最受关注的系统之一,主要原因是它的免费,以及系统的开放性,可以随时取得程序的原代码,这对于程序开发人 ...

  8. 查看linux 系统 当前使用的网卡

    使用ifconfig命令查看到linux 系统有三个网卡 ,其实我只要其中一个启用就可以了,用什么命令查看或者切换网卡,或者停用掉其他两个网卡? watch cat /proc/net/dev 看下哪 ...

  9. Linux系统用户权限管理

    Linux系统中三种基本权限 用户属主.用户属组及其它人权限 -rw-r--r-- 1 root root 762 11-11 20:34 a.out 文件类型 ls命令中的缩写 应用 一般文件 - ...

  10. 实验一 Linux系统与应用准备(嵌入式Linux工程师的“修真之路”)

    作业格式 项目 内容 这个作业属于哪个课程 这里是链接[https://edu.cnblogs.com/campus/nchu/2020SpringSystemAndApplication] 这个作业 ...

随机推荐

  1. 10—mybatis 通用mapper插件 pagehelper 分页

    spring boot真的太好用了,大家以后多多使用,今天来说说pagehelper 来做mybatis分页,我用的是spring boot 做的开发,后面会把源码发出来. pagehelper(ht ...

  2. 部署 & virtualen

    安装:apt-get install virtualen virtualenv --no-site-packages venv 加上了参数--no-site-packages,这样,已经安装到系统Py ...

  3. 15、Spring Boot 2.x 集成 Swagger UI

    1.15.Spring Boot 2.x 集成 Swagger UI 完整源码: Spring-Boot-Demos 1.15.1 pom文件添加swagger包 <swagger2.versi ...

  4. paramiko远程上传下载文件

    import paramiko import sys user = "root" pwd = " # 上传文件 def sftp_upload_file(server_p ...

  5. 详解Kafka: 大数据开发最火的核心技术

    详解Kafka: 大数据开发最火的核心技术   架构师技术联盟 2019-06-10 09:23:51 本文共3268个字,预计阅读需要9分钟. 广告 大数据时代来临,如果你还不知道Kafka那你就真 ...

  6. MySQL 一次非常有意思的SQL优化经历:从30248.271s到0.001s

    转载自:https://www.toutiao.com/i6668275333034148356 一.背景介绍 用的数据库是mysql5.6,下面简单的介绍下场景 课程表: 数据100条 学生表: 数 ...

  7. 【线性代数】4-4:正交基和Gram算法(Orthogonal Bases and Gram-Schmidt)

    title: [线性代数]4-4:正交基和Gram算法(Orthogonal Bases and Gram-Schmidt) categories: Mathematic Linear Algebra ...

  8. 2018年 第43届ACM-ICPC亚洲区域赛(青岛)现场赛 赛后总结

    下了动车后,又颠颠簸簸的在公交车上过了接近一个小时,本来就晕车,于是,到的时候脑子晕死了,而且想吐.可能是没吃早饭的缘故,午饭好好次QWQ. 开幕式 还是第一次在这种环境下参赛,记得以前是看老师发的学 ...

  9. java试题复盘——11月13日

    上: 10. AccessViolationException异常触发后,下列程序的输出结果为(   A   ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 AccessViol ...

  10. Python学习日记(二)——字符转编码操作

    首先搞清楚:Python3的默认编码是unicode,Python2的默认编码是ASCII码 为什么需要编解码? 打个比方:假如说我做了一个游戏,叫<西游记>,游戏传到了日本去.但是日本人 ...