linux 关于 AWK 解析

关于awk

awk是一个报告生成器,他拥有强大的文本格式化的能力。

其实我么可以利用awk命令将一些文本整理成我们想要的样子,比如把一些文本整理成“表”的样子。然后打印出来,至于格式化能力会举例出来,自然会明白。

awk是有Alfred Aho,Peter Weinberger好人Brian Kernighan 这三人创造的,awk由这三个人的姓氏的首个字母组成。

awk早期是在unix上实现的,所以,我们现在在linux中所使用的AWK其实是gawk,也就是GNU awk,简称gawk,awk还有一个版本,New awk,简称nawk,但是linux中最常用的还是gawk。

linux  关于 AWK 解析

awk其实是一门编程语言,它支持调节判断,数组,循环等功能。所以,我们也可以把awk理解成一个脚本编译解释器。

grep,sed,awk被称为linux中的“三剑客”。

我们总结一下这三个“剑客”的特长。

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

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

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

awk基础

awk基本语法:awk[options] ‘Patter{Action}’ file

其中Action指的就是动作awk擅长文本格式化,并且将格式化以后的文本输出,所以awk最常用的动作就是printprintf,

先举个简单的例子不用[options],也不知道pattern,直接用最简单的action。如下:

linux  关于 AWK 解析

上图我们只是使用了awk执行一个打印的动作,将testd文件内容打印出来。

在换个例子:

linux  关于 AWK 解析

上图中没有使用optionpattern,上图中的awk‘{print$5}’ 表示输出df的信息的第5列,$5表示将当前行按照分隔符分割后的第5列,不指定分隔符时,默认使用空格作为分隔符,你一定发现了上述信息用的空格不止有一个,而是连续多个空格,awk自动将连续的空格理解为一个分割符了。

awk是逐行处理的,逐行处理就是说,当awk处理一个文本时,会一行一行进行处理,处理完当前行,在处理下一行,awk默认以“换行符”为标记,识别每一行,也就是说,awk跟我们人类一样,每次遇到“回车换行”,就认为是当前行的结束,新的一行的开始,awk会按照用户指定的分割符去分割当前行,如果没有指定分隔符,默认使用空格作为分隔符。

我们也可以一次输出多列,使用逗号隔开要输出的多个列,如下,一次性输出第一列和第二列

linux  关于 AWK 解析

同理,也可以一次性输出多个指定的列,如下

linux  关于 AWK 解析

我们发现第一行并没有第5列,所以没有输出任何文本,而第二行有第5列,所以输出了。

linux  关于 AWK 解析

未完待续!

原创文章,作者:eedsxb,如若转载,请注明出处:http://www.178linux.com/86397

(2)
eedsxbeedsxb
上一篇 2017-09-09
下一篇 2017-09-09

相关推荐

  • RAID实现原理及常用级别

    RAID(Redundant Array of Independent Disks): 定义:独立硬盘冗余阵列,旧称廉价磁盘冗余阵列(Redundant Array of Independent Disks),简称磁盘阵列。 原理:把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使其性能达到甚至超过价格昂贵,容量巨大的硬盘。 优势: RAID在容量和管理上…

    Linux干货 2016-07-22
  • sed命令及vim编辑器

    sed[option]… 'script' inputfile…选项:-n:不输出模式空间内容的自动打印-e: 多点编辑-f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本-r: 支持使用扩展正则表达式-i: 原处编辑script:'地址命令' 1.地址定界:(1) 不给地…

    Linux干货 2016-08-11
  • 8月22日shell脚本编程之循环和函数

    shell脚本编程 本章内容 编程基础 脚本基本格式 变量 运算 条件测试 流程控制 函数 数组 高级字符串操作 高级变量 配置用户环境 编程基础 程序:指令+数据 编程程序风格:   过程式:以指令为中心,数据服务于指令   对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 程序的执行方…

    Linux干货 2016-08-24
  • 第十五周作业

    1、总结sed和awk的详细用法; sed:     模式空间:sed是一种在线编辑器、行编辑器,一次处理一行内容,在处理时,把当前处理的行存储在临时缓冲区当中,并在该缓冲区中完成后续的处理,该缓冲区被称为”模式空间”。     保持空间:在模式空间中处理完一行内容后会继续处理下一行,但是对于处…

    Linux干货 2017-04-18
  • Leetcode 编程训练

    Leetcode这个网站上的题都是一些经典的公司用来面试应聘者的面试题,很多人通过刷这些题来应聘一些喜欢面试算法的公司,比如:Google、微软、Facebook、Amazon之类的这些公司,基本上是应试教育的功利主义。 我做这些题目的不是为了要去应聘这些公司,而是为了锻炼一下自己的算法和编程能力。因为我开始工作的时候基本没有这样的训练算法和编程的网站,除了…

    Linux干货 2016-08-15

评论列表(1条)

  • 6+1=7
    6+1=7 2017-11-16 12:33

    求继续更新!!!