简介
awk是一个强大的文本分析工具,相对grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格
为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk有3个不同版本:awk、nawk和gawk,未作特别说明,一般gawk,gawk是awk的GNU版本。
awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上awk的确拥有自己的语言:awk程序设计,三位
创建者已将它正式定义为“样式扫描和处理语言”。它允许创建简短的程序,这些程序读取输入文件、为数据读取输入文件、为数据排序、处理数据,对输入执行
计算以及生成报表,还有无数其他的功能。

调用awk

有三种方式调用awk
1、命令行方式
awk [-F 字段分隔符] 'commands' input-file(s)

其中,commands是真正awk命令,[-F域分隔符]是可选的,input-file(s)是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指明-F域分隔符的情况下爱,默认的域分隔符是空格。

2、shell脚本方式
将所有的awk命令插入一个文件,并使用awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
相当于shell脚本首行:#!/bin/bash
可以换成:#!/bin/awk

3、将所有的awk命令插入一个单独文件,然后调用:
awk -f awk-script-file input-file(s)
其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。

awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,
$0则表示所有域,$1表示第二个域,$n表示第n个域。默认域分隔符是“空白键”或者“[tab]键”。

例子:
①、如果只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割
awk -F ':' '{print $1"\t"$7}' /etc/passwd
②、如果只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列明name,shell,在最后一行添加“blue,/bin/nosh”。

awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}' /etc/passwd

awk工作流程是这样的:先执行BEGIN,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按照指定的域分隔符划分域,填充域,$0则表示所有域,
$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。
接着开始读入第二条记录......直到所有的记录都读完。最后执行END操作。

搜索/etc/passwd有root关键字的所有行
awk -F ':' '/root/' /etc/passwd

这种是pattern的使用示例,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)。

搜索支持正则,例如找root开头的:awk -F '/^root/' /etc/passwd

最新文章

  1. TCP服务和首部知识点小结
  2. 学习EF之贪懒加载和延迟加载(2)
  3. 纪念BLives 1.0版本发布
  4. paintEvent(QPaintEvent*)是系统自动调用的
  5. Discuz! x3.1 /utility/convert/index.php Code Execution Vul
  6. 如何写出让hr一看就约你面试的简历?
  7. mysql 关于日期时间的字段类型
  8. Duilib中系统消息在自己窗口类的使用
  9. mysql 常用sql操作语句
  10. JSP中Session的使用
  11. qq互联(connect.qq.com)取用户信息的方法
  12. 高吞吐高并发Java NIO服务的架构(NIO架构及应用之一)
  13. 1.2 Coin 项目
  14. ACM经典算法之字符串处理:字符串替换
  15. 使用 RxJS 实现一个简易的仿 Elm 架构应用
  16. [Luogu 1122] 最大子树和
  17. 错误问题:OpenGL version to old,GLViewinitWithRect(const stdbasic_stringchar,stdchar_traitschar,stdalloca
  18. 好程序员web前端开发测验之css部分
  19. WEB前端移动开发初始化
  20. MySQL全文本搜索

热门文章

  1. mac 安装memcached以及启动memcached
  2. 基于vue-cli项目添加服务端渲染
  3. FFmpeg: AVPacket 结构体分析
  4. 【GMT43智能液晶模块】例程二:串口通信实验
  5. [NM]打开NetworkManager和wpa_supplicant的DEBUG接口
  6. MAC OS查看端口占用情况及杀死进程
  7. 解决Xcode删除文件后missing file警告
  8. Ubuntu 14.04 下搭建SVN服务器 (转载自 http://www.linuxidc.com/Linux/2015-01/111956.htm)-------------我所用到是红色字体
  9. “failed to excute script xxx” PyInstaller 打包python程序为exe文件过程错误
  10. feign调用接口session丢失解决方案