AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk ).
这 种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识。AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特 性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言, 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报 表,还有无数其他的功能。
1.简单过滤使用(支持行):
-awk [选项] '条件{print}' 文件
-命令 | awk
栗子:
1.找出可以登陆的用户
方法一:使用脚本grep... for i in ... 截取%%:*
方法二:sed -n '/bash$/s/:.*//p' /etc/passwd
方法三:awk -F: '/bash$/{print $1}' /etc/passwd
2.找出密码
head -1 /etc/shadom
2.初始化,处理数据,总结输出
awk 'BEGIN{X=12} /bash/{x++} END{print x}'
栗子:
输入命令:awk -F: 'BEGIN{print "名字 UID 目录"}/\/bash$/{print $1,$3,$6}END{print "总用户量:"NF}' /etc/passwd
则显示:
3.支持四则运算(+-*/)
栗子:1+3
awk 'BEGIN{X=1;Y=3;print x=y}' #用变量
awk 'BEGIN{print 1+3}' #非变量
4.判断条件
1)正则// $1~// $1!~//
2) 字符和数字== != > >= < <=
3)&& ||
栗子:
1)awk -F '$1=="wuke"' /etc/passwd #wuke用户(精确)
2)awk -F '$3==0' /etc/passwd #root用户
3)awk -F '$3>=1000' /etc/passwd #普通用户
awk内置函数:
gsub函数有点类似于sed查找和替换。它允许替换一个字符串或字符为另一个字符串或字符,并以正则表达式的形式执行。第一个函数作用于记录$0,第二个gsub函数允许指定目标,然而,如果未指定目标,缺省为$0。
index(s,t)函数返回目标字符串s中查询字符串t的首位置。length函数返回字符串s字符长度。
match函数测试字符串s是否包含一个正则表达式r定义的匹配。
split使用域分隔符fs将字符串s划分为指定序列a。
sprint函数类似于printf函数,返回基本输出格式fmt的结果字符串exp。
sub(r,s)函数将用s替代$0中最左边最长的子串,该子串被r匹配。
substr(s,p)返回字符串s在位置p后的后缀。
substr(s,p,n)同上,并指定子串长度为n。