Shell三剑客:awk(awk编辑编程)六

发布时间:2023年12月30日

一、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

}

  • fname为函数名,
  • arg1...为函数的参数,
  • statements是动作语言,
  • return expr为由 statements 的结果从而决定最终函数所显示的内容。?

四、自定义函数示例

[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

?

?

文章来源:https://blog.csdn.net/weixin_73783595/article/details/135308346
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。