Linux Shell编程——awk 报告生成器

一、认知

awk 处理机制: awk 会逐行处理文本,支持在处理第一行之前做一些准备工作以及在处理完最后一行做一些总结性质的工作,在命令格式上分别体现如下:
BEGIN{ } 读入第一行文本之前执行,一般用来初始化操作
{ } 逐行处理,逐行读入文本执行相应的处理,是最常见的编辑指令
END{ } 处理完最后一行文本之后执行,一般用来输出处理结果
linux 上面默认使用 gawk

二、awk 基本用法

注:不指定分隔符,默认分隔符是空格;不加引号的字符,默认是动作

awk -F : 'BEGIN{print "hello"}' passwd  ##开始执行前,打印hello
awk -F : 'BEGIN{print "hello"}{print $1}END{print "end"}' passwd  ##打印每行的第1列,并且开始执行前打印hello,执行结束打印end
awk -F : '{print FILENAME}' passwd    ##逐行打印文件名passwd
awk -F : '{print NR}' passwd          ##打印passwd文件的每一行的行号
awk -F : '{print NF}' passwd          ##打印passwd每一行以:为分隔符的列数
awk -F : '{print $1}' passwd          ##打印passwd每一行以:为分隔符的第1列
awk -F : '/bash$/{print $1}' passwd   ##打印passwd每一行以:为分隔符,以bash结尾的行第一列
awk -F : '/!bash$/{print $1}' passwd  ##打印passwd每一行以:为分隔符,除了以bash结尾的行第一列
awk '/[a-d]/{print}' passwd           ##打印包含a-d的每一行
awk '/^[a-d]/{print}' passwd          ##打印以a-d开头的每一行
awk '!/^[a-d]/{print}' passwd
或者 awk '/^[^a-d]/{print}' passwd
awk '/^a|bash$/{print}' passwd        ##以a开头或者以bash结尾的
awk '!/^a|bash$/{print}' passwd
awk '/!^a|bash$/{print}' passwd       ##不是以a开头但是是以bash结尾的
awk -F : '$6~/\bin$/' passwd          ##打印以:为分隔符第六列是以bin结尾的
awk -F : '$6!~/\bin$/' passwd         ##打印以:为分隔符第六列不是以bin结尾的
awk 'BEGIN{N=100;print N+50}'         ##做运算,开始N=100,打印后N=100+50

awk 测试

1.显示可以登录系统的用户的个数
2.显示用户的家目录不在/home底下,能登录系统的
3.显示用户的家目录不在/home底下,能登录系统的用户的个数

猜你喜欢

转载自blog.csdn.net/weixin_44209804/article/details/88290111
今日推荐