2019独角兽企业重金招聘Python工程师标准>>>

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

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

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

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

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

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

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

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

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

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

比如我用上次那个文本 testfile

使用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

转载于:https://my.oschina.net/u/2277632/blog/2963338

shell学习之awk或gawk相关推荐

  1. shell学习之awk

    linux shell awk 语法     Awk 是一种非常好的语言,同时有一个非常奇怪的名称.在本系列(共三篇文章)的第一篇文章中,Daniel Robbins 将使您迅速掌握 awk 编程技巧 ...

  2. Shell学习总结-awk实用程序

    FS---分隔符 OFS---(输出字段分隔符) NF---总的行数 NR---当前的行数 目录 什么是awk.nawk.gawk 从文件输入 从命令输入 BEGIN模式 END模式 包含BEGIN和 ...

  3. Shell学习之结合正则表达式与通配符的使用(五)

    Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符 ...

  4. shell学习-基础篇

    shell学习-基础篇 Linux? 挺好的! shell是基础- 最近利用闲暇时间在 http://c.biancheng.net/ 网站上学习了shell基础篇,整理成博客以加深理解 文章目录 L ...

  5. shell脚本中awk应用,数组的定义使用

    1.awk的基础应用 1.1,概念 除了使用 sed 命令,Linux 系统中还有一个功能更加强大的文本数据处理工具,就是 awk.它诞生于 20 世纪 70 年代末期,这也许是它影响了众多 Linu ...

  6. shell学习笔记 (2)

    shell学习笔记 (2) ---china.pub.com  linux shell电子书学习笔记 第2章 使用find和xargs find pathname -options [-print - ...

  7. shell中join链接多个域_Linux Shell中使用awk完成两个文件的关联Join

    Shell中的awk命令是非常强大的,有很多书籍专门介绍awk的.本文介绍的只是其中很小的一个点,使用awk命令完成两个文件的关联join. 先看看awk中的两个自身变量,NR和FNR. awk可以指 ...

  8. 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等

    1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...

  9. Shell编程:awk使用总结

    1. 什么是awk awk是Unix/Linux提供的样式扫描与处理工具,非常擅长处理结构化数据和生成表单.与sed 和grep 很相似,但功能却超过大于两者,由于awk具备各种脚本语言的特点,所以也 ...

最新文章

  1. 16进制魔术数字 0xdeadbeef Leet英文转写形式 简介
  2. C++面试八股文快问快答の基础篇
  3. oracle常用函数api,Oracle-API OracleAPI、oracle10G函数大全(常用函数)、 联合开发网 - pudn.com...
  4. php中控车牌识别push协议,车牌识别一体机的RS485小接口——实现透明传输!
  5. web功底之强,实属罕见。。
  6. poi动态创建文档_POI创建的文档具有不同条件的灵活样式
  7. 最长子串(FZU2128)
  8. 案例 月工作列表 c# 1614099857
  9. 方阵的迹(trace)及其微分(导数)
  10. CString Format
  11. MySQL 性能优化神器 Explain 使用分析
  12. MVX Android设计架构浅析-MVP
  13. 本经阴符七术--鬼谷子
  14. Linux之ARM(IMX6U)裸机汇编LED驱动实验--烧写bin文件到SD卡中并运行
  15. 论文笔记:WORD TRANSLATION WITHOUT PARALLEL DATA
  16. Arm NEON intrinsics指令格式
  17. 牛客网第九场多校联赛 E Music Game
  18. vim中字母大小写变换
  19. 全球台式计算机出货量,Gartner:2020年全球PC电脑出货量达到2.75亿台 同比增长4.8%...
  20. Android pins 模块化架构gradle配置

热门文章

  1. 看看webpack打包优化
  2. php 变量类型 typeof,typeof和instanceof的区别是什么
  3. docker from指令的含义_volume_from指令-docker撰写
  4. oracle请求界面,Oracle EBS如何enable 请求界面 View XML按钮
  5. Maven使用注解配置SQL映射器(@Select,@Insert,@Update,@Delete)
  6. iframe调用父页面js方法_JS高级技巧
  7. fwOA获取当前用户信息及常用数据库表
  8. java 中class相关的问题
  9. 获取网关IP和MAC 的VB源码
  10. vb与数据库(二)之迟到的学生信息管理系统总结