报告生成工具,每一行的每个字段分别进行格式化,而后进行显示
******************************
支持使用变量、条件判断、循环、数组
awk-->new awk-->nawk
按行进行逐字段过滤处理并显示
*************切割后*****************
$0表示整行
$1 $2...依次表示第一个第二个...字段
**************用法格式****************
awk [options] ‘script‘ FILE...
awk [options] ‘/pattern/{action}‘ FILE...
action:print $1,$2,$3
模式:
地址定界:/pat1/,/pat2/
/pattern/
expression:表达式
> >= < <= == != ~
BEGIN:执行前操作
END:执行后的收尾工作
awk的常用四种分隔符
输入:
行分隔符
字段分隔符
输出:
行分隔符
字段分隔符
########
字段间可任意写入字符
awk -F : ‘/^root/{print "User name:",$1,"\nShell:", $7}‘ passwd
########
! 模式取反
df -h | awk ‘!/^Filesystem/{print $1}‘
########
字段做条件判断,表达式的使用
awk -F : ‘$3>=400{print $0}‘ passwd
awk -F : ‘$7~/bash$/{print $0}‘ passwd
########
BEGINEND
awk -F : ‘BEGIN{print "User name\n-------------------"}$7~/bash$/{print $1}END{print "________________\n3 User"}‘ passwd
########
FS OFS定义在BEGIN
awk ‘BEGIN{FS=":"}$3>=400{print $1}‘ passwd
awk ‘BEGIN{FS=":";OFS="@"}$3>=400{print $1,$2}‘ passwd
*************内置变量*****************
NF:字段数 number of field
FS: field separator指定输入分隔符,可在BEGIN中定义,指定时要使用"",默认为空白
OFS:输出时指定的分隔符,在BEGIN中定义,指定时要使用"",默认为空白
**************练习****************
1.显示GID小于500的组
awk -F : ‘$3<500{print $1}‘ /etc/group
awk ‘BEGIN{FS=":"}$3<500{print $1}‘ /etc/group
2.显示默认的shell为nologin的用户
awk -F : ‘$7~/nologin$/{print $1}‘ /etc/passwd
awk ‘BEGIN{FS=":"}/nologin$/{print $1}‘ passwd
3,显示eth0网卡文件的配置信息,注意,只显示等号后面的值
awk -F = ‘{print $2}‘ /etc/sysconfig/network-scripts/ifcfg-eth0
awk ‘BEGIN{FS="="}{print $2}‘ /etc/sysconfig/network-scripts/ifcfg-eth0
4.显示/etc/sysctl.conf文件中定义的内核参数:只显示名称,
awk -F =‘ !/^#|^$/{print $1}‘/etc/sysctl.conf
awk ‘BEGIN{FS="="}!/^#|^$/{print $1}‘ /etc/sysctl.conf
5.显示eth0网卡的ip地址,通过ifconfig命令结果进行过滤
ifconfig eth0 |awk ‘/inet addr/{print $2}‘ |awk -F : ‘{print $2}‘
后续再加awk的高级部分