awk:报告生成工具
1、
awk把文件中读取的每一行的每一个字段分别进行格式化,而后进行显示。 awk本身内置变量,条件判断,循环和数组。
如图所示,awk内置变量$1...而整行表示为$0
2、命令格式
用法格式: awk [options] 'script' FILE awk [options] '/pattern/{action}' FILE
3 、地址界定:使用pattern模式匹配
①地址定界/pat1/,/pat2/ 显示从模式1第一次匹配到模式2第一次匹配 ②/pattern/ 匹配整个模式的所有都显示 ③expression表达式 > ,>=,<,<=,==,!=,~ ④BEGIN:执行前的所准备工作 ⑤END :执行后的收尾工作
4、 awk常用的四中分隔符
输入:行分隔符;字段分隔符 输出:行分隔符;字段分隔符
5、 awk的内置变量
NF:字段数 FS:读入行时使用的字段分隔符,默认为空白 OFS:输出时使用的字段分隔符,默认为空白
6、举例说明
1)
1)只显示df -h 输出结果的第1列数据
(awk '{print $1}' --->awk没有设定分隔符,那么默认为空白;后边紧跟动作{print $1}显示第1个参数的所有内容)
2)使用 表达式匹配
查找/etc/passwd中,用户ID大于等于500的用户名
(解析:/etc/passwd的字段分隔符为: 地址界定为$3>=500 此处使用的是>=表达式;动作{print $1}显示位置为$1 的 用户名;查找的文件为/etc/passwd用户数据库文件)
3)使用pattern模式匹配
查找以/bin/bash为默认shell的用户
(解析:分隔符为冒号:模式为$7~/bash$/)动作{print $1} 查找的文件/etc/passwd
看到此处如果对$7~/bash$/有不理解的同学,请阅读我前边的博客《漫谈正则表达式》
4)使用BEGIN模式匹配
显示组ID小于500的组
指定冒号为分隔符的另一种表达方式{FS=":"}
5)OFS模式匹配
OFS定义输出格式 查找用户ID大于等于500的用户,并以冒号隔开的形式显示用户名和其默认shell
以上为awk的一些基本用法,关于awk的高级用户后期会陆续推出,敬请期待。
求各位大神指点