GNU awk:

  文本处理三工具:grep,sed,awk

    grep,egrep,fgrep:文本过滤工具:pattern

    sed:行编辑器

      模式空间、保持空间

    awk:报告生成器,格式化文本输出;

    AWK:Aho,Weinberger,Kernighan --> New AWK,NAWK

    GNU awk,gawk

  gawk - pattern scanning and processing language

    基本用法:gawk [options] 'program' FILE ...

      program:PATTERN {ACTION STATEMENTS}

        语句之间用分号分隔

        print,printf

      选项:

        -F:指明输入时用到的字段分隔符;

        -v var=value:自定义变量;

    1、print

      print item1,item2,...

      要点:

        (1) 逗号分隔符;

        (2) 输出的各item可以字符串,也可以是数值;当前记录的字段、变量或awk的表达式;

        (3) 如省略item,相当于print $0;

    2、变量

      2.1 内建变量

        FS:input field seperator,默认为空白字符;

        OFS:output field seperator,默认为空白字符;

        RS:input record seperator,输入时的换行符;

        ORS:output record seperator,输出时的换行符;

      

        NF:number of field,字段数量

          (print NF),{print $NF}

        NR:number of record,行数;

        FNR:各文件分别计数;行数;

      

        FILENAME:当前文件名;

        ARGC:命令行参数的个数;

        ARGV:数组,保存的是命令行所给定的各参数;

      2.2 自定义变量

        (1) -v var=value

          变量名区分字符大小写;

        (2) 在program中直接定义

    3、printf命令

      格式化输出:printf FORMAT,item1,item2,...

        (1) FORMAT必须给出;

        (2) 不会自动换行,需要显式给出换行控制符,\n

        (3) FROMAT中需要分别为后面的每个item指定一个格式化符号;

        格式符:

        装饰符:

          #[.#]:第一个数字控制显示的宽度;第二个#表示小数点后面的精度;

            %3.1f

          -:左对齐

          +:显示数值的符号

    4、操作符

      算术操作符:

        x+y,x-y,x*y,x/y,x^y,x%y

        -x

        +x:转换为数值;

      字符串操作符:没有符号的操作符,字符串连接

      赋值操作符:

        =,+=,-=,*=,/=,%=,^=

        ++,--

      比较操作符:

        >,>=,<,<=,!=,==

      模式匹配符:

        ~:是否匹配

        !~:是否不匹配

      逻辑操作符:

        &&

        ||

        !

      函数调用:

        function_name(argu1,arge2,...)

      条件表达式:

        selector?if-true-expression:if-false-expression

    5、PATTERN

      (1) empty:空模式,匹配每一行;

      (2) /regular expression/:仅处理能够被此处的模式匹配到的行;

      (3) relational expresson:关系表达式;结果有“真”有“假”;结果为“真”才会被处理;

        真:结果为非0值,非空字符串;

      (4) line ranges:行范围,

        startline,endline

        /pat1/,/pat2/

        注意:不支持直接给出数字的格式

      (5) BEGIN/END模式

        BEGIN{ }:仅在开始处理文件中的文本之前执行一次;

        END{ } :仅在文本处理完成之后执行一次;

    6、常用的action

      (1) Expressions

      (2) Control statements:if,while等;

      (3) Compound statements:组合语句;

      (4) input statements

      (5) output statements

    7、控制语句

      if(condition) {statments}

      if(condition) {statments} else {statemnets}

      while(condition) {statments}

      do {statments} while(condition)

      for (expr1; expr2; expr3)  {statemnets}

      break

      continue

      delete array[index]

      delete array

      exit

      {statements}

Linux:Day17(上) gawk基础的更多相关文章

  1. NoSql1 在Linux(CentOS)上安装memcached及使用

    前言:       今天是初五,生活基本要从过年的节奏中回归到正常的生活了,所以想想也该想想与工作有关的事情了.我之前在工作中会经常使用memcached和redis,但是自己一直没有时间系统的好好看 ...

  2. linux基础-第十四单元 Linux网络原理及基础设置

    第十四单元 Linux网络原理及基础设置 三种网卡模式图 使用ifconfig命令来维护网络 ifconfig命令的功能 ifconfig命令的用法举例 使用ifup和ifdown命令启动和停止网卡 ...

  3. (转)推荐一个在Linux/Unix上架设ASP.NET的 WEB服务器--Jexus

    在Linux/Unix上架设ASP.NET WEB服务器,有两个可选方式,一种是Mono+XSP,一种是Mono+Jexus,其它的方式,比如 Apache+mod_mono.Nginx+FastCg ...

  4. Spark环境搭建(上)——基础环境搭建

    Spark摘说 Spark的环境搭建涉及三个部分,一是linux系统基础环境搭建,二是Hadoop集群安装,三是Spark集群安装.在这里,主要介绍Spark在Centos系统上的准备工作--linu ...

  5. 罗列Linux发行版的基础目录名称,命令法则和功能

    罗列Linux发行版的基础目录名称命名法则及功用规定 目录描述 /主层次 的根,也是整个文件系统层次结构的根目录 /bin存放在单用户模式可用的必要命令二进制文件,所有用户都可用,如 cat.ls.c ...

  6. 在Linux(Centos7)上使用Docker运行.NetCore

    在上一篇中我们写了如何在windows中使用docker运行.netcore,既然我们了解了windows下的运行发布,我们也可以试试linux下使用docker运行.netcore项目,那么今天我们 ...

  7. jenkins+svn完整打包并上传到linux服务器上

    因为公司用的是svn版本管理工具并且部署在了windows服务器上,所以测试环使用jenkins需要部署两套环境, 一套是在本地windows服务器,jenkins从svn下载代码完成打包并上传到li ...

  8. Linux最常用的基础命令

    Linux最常用的基础命令个人总结 计算机基础知识: 32bit和64bit系统的区别.系统运行机制 32bit=内存的最大寻址空间是2**32,也就是说最大只能使用4GB的内存64bit=内存的最大 ...

  9. 10个在UNIX或Linux终端上快速工作的建议

    你有没有惊讶地看到有人在Unix/ Linux中工作得非常快,噼里啪啦的敲键盘,快速的启动命令,飞快地执行命令? 在本文中,我共享了一些在Linux中快速.高效工作所遵循的Unix/ Linux命令实 ...

随机推荐

  1. Servlet不再是烦恼

    Servlet 一.什么是Servlet? Servlet是在服务器上运行的小程序,也就是一个Java类,但比较特殊,不需要new,自动就可以运行.也有创建.垃圾回收和销毁过程.Servlet是Jav ...

  2. webpack4升级指南

    webpack4升级指南 鉴于图书项目编译速度极慢的情况(项目里面module太多了,编译慢很正常)且最近需求不多(很少出现的空挡期).所以我觉得搞一波webpack升级,看看有没有帮助.webpac ...

  3. JavaScript第一回-来龙去脉

    简写:JavaScript-JS   ECMAScript-ES 写在前面的话:啃文字大多时间不是件愉快的事情,但是我们必须过这个坎,让自己习惯,让自己不讨厌,至于喜欢不喜欢,我们等时间给出答案. J ...

  4. Python基础(文件操作)

    文件读取: #文件读取方式一 f=open("a.txt","r+",encoding="utf8") data=f.read() prin ...

  5. 机器学习中如何处理不平衡数据(imbalanced data)?

    推荐一篇英文的博客: 8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset 1.不平衡数据集带来的影响 一个不 ...

  6. ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1

    一.前言  最近一两个星期,加班,然后回去后弄自己的博客,把自己的电脑从 Windows 10 改到 Ubuntu 18.10 又弄回 Windows 10,原本计划的学习 Vue 中生命周期的相关知 ...

  7. 【Android Studio安装部署系列】九、Android Studio常用配置以及快捷键

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 整理Android Studio的常用配置和快捷键. 常用配置 显示行号 临时显示 永久显示 File——Settings——Edi ...

  8. Nginx反向代理后,java获取客户端真实IP地址

    一般情况下,java获取客户端IP地址的方法为request.getRemoteAddr();但这只是在没有网关或者代理的情况下,如果客户端将请求发送到nginx,再由nginx进行反向代理到目标服务 ...

  9. java的spi 的简单应用

    1.什么是java的spi SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制. 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一 ...

  10. 【大数据安全】Kerberos集群安装配置

    1. 概述 Kerberos是一种计算机网络认证协议,它允许某实体在非安全网络环境下通信,向另一个实体以一种安全的方式证明自己的身份.它也指由麻省理工实现此协议,并发布的一套免费软件.它的设计主要针对 ...