1、介绍
awk报告生成器,逐行处理文本,可在行首进行准备工作,最后行做结束工作。
2、awk格式
awk 'BEGIN{ commands }{ commands } END{ commands }'
BEGIN{}读入第一行文本工作
{}逐行处理
END{}处理完最后一行工作
NR 表示行
NF 表示列
常用选项:
-F 指定分隔符
-f scripfile 从脚本文件中读取awk命令
3、测试
(1)awk 'BEGIN{print "hi\n"}{print $0}' file1
在读入第一行前输出hi,并输出所有行
(2)awk 'NR==3{print}' file1
输出file1文件的第三行
(3)awk -F : '{print NF,$2}' file1
查看以:作为分割符,每行输出总列数及分割后的第2列
(4)awk 'BEGIN{a=10;print 66+a}'
处理前赋值a为10,之后输出66+a的结果,处理两条命令需添加;作为分隔
(5)awk '/^ro/{print}' /etc/passwd
输出/etc/passwd以ro作为开头的行
(6)awk 'BEGIN{n=0}/nologin$/{n++}END"{print n}' /etc/passswd
查找passwd下结尾为nologin登陆的行数
(7)awk -F : '$6!~/^\/home/&&/bash$/{print}' /etc/passwd
查找到passwd下家目录不是在/home下且可以登陆的行
(8)awk -F : '$6~/bin$/{print $1}' /etc/passwd
输出以:作为分隔符,第6列以bin结尾的用户
(9)从ifconfig中获取ip
命令:ifconfig eth0 | awk -F " " 'NR==2{print $2}'