shell学习之awk或gawk

AWK 是该编程语言自己的名称,它编写于 1977 年。其名称是三个主要做者的姓的首字母缩写:Drs. A. Aho、P. Weinberger 和 B. Kernighan。html

由于 AWK 是一种文本处理和模式匹配语言,因此它一般称为数据驱动的语言,程序语句描述须要进行匹配和处理的输入数据,而不是程序操做步骤的序列,在许多语言中都是这样的。AWK 程序在其输入数据中搜索包含模式的记录、对该记录执行指定的操做,直到程序到达输入的末尾。linux

AWK 语言是一种 UNIX 备用工具,它是一种功能强大的文本操做和模式匹配语言,特别适用于进行信息检索,这使得它很是适合用于当今的数据库驱动的应用程序。数据库

虽然基本在linux的发行版中都没有默认安装gawk程序,可是我用的腾讯云的机器上是已经安装了,腾讯云默认安装了不少软件。编程

我仍是比较喜欢用ubuntu的,可使用apt-get install 安装,在mac中能够用 brew install,或者你能够下载了编译安装!ubuntu

gawk程序让流编辑迈上了一个新的台阶,它 提供了一种编程语言而不仅是编辑器命令。经常使用来从大文本文件中提取数据元素,并将它们格式化成可读的 报告。在gawk编程语言中,你能够作下面的事情:编程语言

  • 定义变量来保存数据;
  • 使用算术和字符串操做符来处理数据;
  • 使用结构化编程概念(好比if-then语句和循环)来为数据处理增长处理逻辑;
  • 经过提取数据文件中的数据元素,将其从新排列或格式化,生成格式化报告

在上面的截图中,已经展现了gawk的用法,和一些功能参数。编辑器

gawk会将以下变量分配给它在文本行中发现的数据字段,$0表明整个文本行;$1表明文本行中的第1个数据字段; $2表明文本行中的第2个数据字段; $n表明文本行中的第n个数据字段。awk中默认的字段分隔符是任意的空白字符。工具

将 AWK 输入数据划分为记录

AWK 程序由规则 组成,它们是一些模式,后面跟着由换行分隔的操做。当 AWK 执行一条规则时,它在输入记录中搜索给定模式的匹配项,而后对这些记录执行给定的操做。命令行

好比我用上次那个文本 testfilecode

使用gawk '{print $4}' testfile 

除了print操做,咱们还可使用其余的操做

若是你对分隔符有特殊的要求,那么你还可使用 -F后面接分隔符,好比gawk -F: '{print $1}' /etc/passwd

你也能够组合使用命令行,好比echo "My name is Rich" | gawk '{$4="Christine"; print $0}'

第一条命令会给字段变量$4赋值。第二条命令会打印整个数据字段。

gawk可使用BEGIN在处理数据前或者处理后END执行脚本。

在 GAWK 中,其模式匹配机制相似于 egrep 命令的模式匹配机制。要仅输出那些匹配模式的记录,能够在规则中指定该模式,使用斜杠字符括起来。

 awk '/dog2/ { print }' testfile 去匹配下面的记录

能够写成下面的多个匹配 awk '/dog2/ && /fox/  { print }' testfile

虽然awk和gawk有着强大的功能,可是用的不是不少,暂时就先写这么多吧!

 

参考:

http://www.runoob.com/linux/linux-comm-awk.html

https://www.cnblogs.com/xudong-bupt/p/3721210.html

相关文章
相关标签/搜索