首页 > 代码库 > awk基础---回顾

awk基础---回顾

报告生成工具,每一行的每个字段分别进行格式化,而后进行显示

******************************

支持使用变量、条件判断、循环、数组

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的高级部分

本文出自 “linux-halt” 博客,请务必保留此出处http://loveall.blog.51cto.com/8658573/1874201

awk基础---回顾