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

相关推荐

  • shell 脚本之数组 和 yum 【下】

    shell 脚本之数组 和 yum 【下】 数组   变量:存储单个元素的内存空间   数组:存储多个元素的连续的内存空间,相当于多个变量的 集合。   数组名和索引        索引:编号从0开始,属于数值索引        注意:索引可支…

    Linux干货 2016-08-24
  • 第五周学习总结-rpm&yum

    我们都知道,计算机只能识别二进制程序,而程序员编写的源代码都是以纯文本形式存在,因此,要想让计算机识别并运行这些源代码程序,就必须通过中间的转换机制让源代码变为二进制程序文件,而这种转换过程就称为编译过程。Linux的各发行版本中由于各厂商的编译过程不尽相同,因此就诞生了各种不同的软件管理包组件。其中我们最熟知的就要数Redhat系列的rpm包了。 rpm包…

    2018-01-03
  • Bash的&&,||逻辑运算

    Bash的&&,||逻辑运算 bash里的true和false并不是我们通常所认为的0和1。 true和false是shell的内置命令,返回逻辑值。 $?是一个特殊的变量,存放有上一个程序的结束状态。 在shell里面,把0作为程序是否成功结束的标志。 例如: $ true$ echo$?0$ false$ echo$?1 有时候,下一条命…

    Linux干货 2016-04-11
  • ☞yum源的生成与配置{ local;cdrom;http;ftp;}

    ☞yum源的生成与配置{ local;cdrom;http;ftp;} 本文是继上一篇文章“CentOS程序安装的3种方式{ 源码包安装 | rpm包安装 | yum安装;}”的补充,上篇文章http://www.178linux.com/38812主要介绍了基于cdrom的yum源制作和配置以及归纳了详细的yum命令。本文继续介绍基于本地file、远程ht…

    Linux干货 2016-08-24
  • shell脚本一键分区

    #!/bin/bash #实现硬盘自动分区助手 echo "当前所有分区:" echo `fdisk -l|grep "Disk /dev/[sh]d"|cut -d: -f1|awk '{print $2 &q…

    Linux干货 2016-07-26
  • 关于 开机启动加密破坏修复 自制linux系统

         开机破坏并且修复之       自制linux系统                CentOS 6启动流程: POST –> Boot Sequence(BIOS) –&…

    系统运维 2016-09-14

评论列表(1条)

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

    求继续更新!!!