一、AWK 的函数前言
????????awk的函数有许多,除了系统自带的内建函数还有就是用户自定义的函数。
二、AWK 常用的函数
rand() # 返回0 和1 之间一个随机数
srand() # 生成随机数种子
int() # 取整数
length([s]) # 返回指定字符串的长度
sub(r,s,[t]) # 对t字符串进行搜索,r表示的模式匹配的内容,并将第一个匹配的内容替换为s
gsub(r,s,[t]) # 对t字符串进行搜索,r表示的模式匹配的内容,并全部替换为s所表示的内容
split(s,array,[r])# 以r为分隔符,切割字符串s,并将切割后的结果保存至array 所表示的数组中,第一个索引值为1, 第二个索引值为2,…也就是说awk的数组下标是从1开始编的
substr(s,i,[n]): # 从s所表示的字符串中取子串,取法:从i表示的位置开始,取n个字符。
systime() # 取当前系统时间,结果形式为时间戳。
system() # 调用shell中的命令。空格是awk中的字符串连接符,如果system中需要使用awk中的变量可以使用空格分隔,或者说除了awk的变量外其他一律用""引用起来
三、自定义函数语法格式
function fname ( arg1,arg2 , ... ) {
statements
return expr
}
四、自定义函数示例
[root@192 ~]# vim fun.awk
[root@192 ~]# cat fun.awk
function max(v1,v2) {
v1>v2? var=v1:var=v2
return var
}
BEGIN{a=3;b=2;print max(a,b)}
[root@192 ~]# awk -f fun.awk
3
?
?
五、AWK 应用实战
????????AWK 统计 tcp 连接?
[root@192 ~]# ss -an | grep ^tcp|awk '{tcp_connect_status[$2]++} END{for(i in tcp_connect_status) {print i,tcp_connect_status[i]}}'
LISTEN 4
ESTAB 1
?
?