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. Python爬虫 【requests】request for humans

    安装 pip install requests 源码 git clone git://github.com/kennethreitz/requests.git 导入 import requests 发 ...

  2. Git让你从入门到精通,看这一篇就够了!

    简介 Git 是什么? Git 是一个开源的分布式版本控制系统. 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 什么是分布式版本控制系统? 介绍分布 ...

  3. python进程和线程(六)

    协程 协程,又称微线程,纤程.英文名Coroutine.顾名思义,协程是协作式的,也就是非抢占式的程序(线程是抢占式的).协程的关键字是yield,一看到这个就想到了生成器对不对?那就顺便回顾一下生成 ...

  4. Python基础(生成器)

    二.生成器(可以看做是一种数据类型) 描述: 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我 ...

  5. 内核mailbox

    只罗列增加取走消息: static int add_to_rbuf(struct mbox_chan *chan, void *mssg) { int idx; unsigned long flags ...

  6. 深入解析ThreadLocal 详解、实现原理、使用场景方法以及内存泄漏防范 多线程中篇(十七)

    简介 从名称看,ThreadLocal 也就是thread和local的组合,也就是一个thread有一个local的变量副本 ThreadLocal提供了线程的本地副本,也就是说每个线程将会拥有一个 ...

  7. OpenCV+TensorFlow实现自定义手写图像识别

    完整版请点击链接:https://mp.weixin.qq.com/s/5gHXGmLbtO7m3dOFrDUiHQ    或微信关注“大数据技术宅” 继用TensorFlow教你做手写字识别(准确率 ...

  8. docker (2) 通用/镜像命令

    Docker 的常用命令: (1)Docker  help 命令: 可以查看有关docker的所有操作命令: (2)docker COMMAND -–help 查看docker 的某项命令的帮助文档 ...

  9. 基于vue-cli快速构建

    基于vue-cli快速构建 https://www.jianshu.com/p/2769efeaa10a   Vue是近两年来比较火的一个前端框架(渐进式框架吧),与reactjs和angularjs ...

  10. 【转】JavaSE面试题目收集

    1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用, ...