linux三剑客awk命令详解之函数

awk函数

在awk命令中,可以自定义函数,awk也有内置的函数,本篇文章主要介绍awk中的内置函数。

awk内置函数分类
在awk中,内置函数主要分为算数函数、字符串函数、时间函数、其他函数等,以下列出一些常用的内置函数:

  • 算数函数
    常用的主要有rand函数、srand函数、int函数。
    rand函数用于产生随机数,但rand函数产生的是一个伪随机数,若没有设置随机数种子,rand函数每次在调用的时候,产生的随机数会相同,示例如下:
    linux三剑客awk命令详解之函数_第1张图片
    因此,在调用rand函数之前,可以通过srand函数来设置随机数种子(srand函数是初始随机数发生器),此时可以生成不同的0~1的随机数,示例如下:
    linux三剑客awk命令详解之函数_第2张图片
    以上示例产生的都是小于1的小数,若想要获得整数,比如小于10的整数,可以将获得的随机数乘以10,再使用int函数取整(这点与c++中不太一样,在c++中直接使用语句rand()%10即可),示例如下:
    linux三剑客awk命令详解之函数_第3张图片
  • 字符串函数
    常用文本替换的字符串函数有gsub函数sub函数
    1.gsub函数为gsub(“原字符串”或正则表达式,“目标字符串”,替换范围),功能是在指定的范围内查找指定的字符,并将其替换为指定的字符串,替换的所有匹配到的字符串。示例如下:
    1)将小写的e替换成大写的E
    这里是将第一列的e替换成E,gsub函数默认是替换整行满足条件的字符。linux三剑客awk命令详解之函数_第4张图片
    linux三剑客awk命令详解之函数_第5张图片
    2)使用正则表达式来选择替换范围
    将文本中的shell替换成bash。
    linux三剑客awk命令详解之函数_第6张图片
    ⚠️注意到这里的shell字符串被替换成bash之后,前后的冒号’:'被空格替换了,原因是awk命令中默认的输出分隔符为空格,若指定OFS变量为冒号,字符串替换之后,输出也是用冒号间隔开。
    在这里插入图片描述

2.sub函数也是替换匹配的字符串,与gsub函数的区别就是sub函数对每一行只会替换指定范围内第一次匹配到的字符,示例如下:
linux三剑客awk命令详解之函数_第7张图片
也可以使用length函数来获取字符串的长度,示例如下:
linux三剑客awk命令详解之函数_第8张图片
length函数不指定参数时,默认时计算整行的字符长度,即参数为$0。

也可以使用index函数来获取指定字符在整个字符串中的位置,示例如下:
linux三剑客awk命令详解之函数_第9张图片
从图中可以看出,当指定的字符串不在当前行中时,index函数返回0,每一行的字符从1开始,当字符存在当前行中时,返回字符串第一个字符在行中的位置。

想要了解更多awk命令的有关内容,可以查阅官方手册

你可能感兴趣的:(linux命令)