课时126:awk实践_进阶知识_内置函数1

1.2.5 内置函数1

学习目标

这一节,我们从 基础知识、简单实践、小结 三个方面来学习。

基础知识

简介

	在awk内部预制了一些函数,借助于这些函数,我们可以实现相关场景的快速操作。这些内置函数的常见类型有:
数值类内置函数
	int(expr)     截断为整数:int(123.45)和int("123abc")都返回123,int("a123")返回0
    sqrt(expr)    返回平方根
    rand()        返回[0,1)之间的随机数,默认使用srand(1)作为种子值
    srand([expr]) 设置rand()种子值,省略参数时将取当前时间的epoch值(精确到秒的epoch)作为种子值
字符串类内置函数
	sprintf(format, expression1, ...):返回格式化后的字符串
	length():返回字符串字符数量、数组元素数量、或数值转换为字符串后的字符数量
	strtonum(str):将字符串转换为十进制数值
        如果str以0开头,则将其识别为8进制
        如果str以0x或0X开头,则将其识别为16进制
	tolower(str):转换为小写
	toupper(str):转换为大写
	index(str,substr):从str中搜索substr(子串),返回搜索到的索引位置,搜索不到则返回0
数据操作内置函数
	substr(string,start[,length]):从string中截取子串
	split(string, array [, fieldsep [, seps ] ]):将字符串分割后保存到数组array中
	match(string,reg[,arr]):使用reg正则规则匹配string信息,默认返回匹配的索引,可以将内容存到数组

简单实践

实践1-数据值函数实践

int数据取整
[root@localhost ~]# awk 'BEGIN{print int(123.45)}'
123
[root@localhost ~]# awk 'BEGIN{print int(123.565)}'
123

sqrt数据求平方根
[root@localhost ~]# awk 'BEGIN{print sqrt(9)}'
3

rand()求0-1的随机数
[root@localhost ~]# awk 'BEGIN{print rand()}'
0.237788
srand() 设定rand()的随机权重,权重固定,rand()值固定
[root@localhost ~]# awk 'BEGIN{srand();print rand()}'
0.858697
[root@localhost ~]# awk 'BEGIN{srand();print rand()}'
0.587366
[root@localhost ~]# awk 'BEGIN{srand(2);print rand()}'
0.610198
[root@localhost ~]# awk 'BEGIN{srand(2);print rand()}'
0.610198

结合srand()获取随机整数
[root@localhost ~]# awk 'BEGIN{srand();print int(22*rand())}'
10
[root@localhost ~]# awk 'BEGIN{srand();print int(22*rand())}'
7

实践2-字符串实践

sprintf设定数据基本样式
[root@localhost ~]# awk 'BEGIN{a=sprintf("%s-%d-%s","abc",23,"ert"); print a}'
abc-23-ert

length获取字符串长度
[root@localhost ~]# awk 'BEGIN{v="nsfadsafdsaf";print length(v)}'
12

tolower转换为小写
[root@localhost ~]# awk 'BEGIN{v="ADMIN";print tolower(v)}'
admin

toupper转换为大写
[root@localhost ~]# awk 'BEGIN{v="nsfad";print toupper(v)}'
NSFAD

index查找子字符串的位置
[root@localhost ~]# awk 'BEGIN{str="nsfad";print index(str, "fa")}'
3
[root@localhost ~]# awk 'BEGIN{str="nsfad";print index(str, "ns")}'
1
[root@localhost ~]# awk 'BEGIN{str="nsfad";print index(str, "ad")}'
4	

实践3-其他操作

substr字符串截取
[root@localhost ~]# awk 'BEGIN{v="abcdefgh";print substr(v,3)}'
cdefgh
[root@localhost ~]# awk 'BEGIN{v="abcdefgh";print substr(v,3,3)}'
cde

split切割字符串
[root@localhost ~]# awk 'BEGIN{split("abc-def-gho-pq",arr,"-",seps); print length(arr), arr[3], seps[1]}'
4 gho -
[root@localhost ~]# awk 'BEGIN{split("abcde",arr,"-");print arr[1]}'
abcde
[root@localhost ~]# echo "12:34:56" | awk '{split($0,a,":");print a[1],a[2],a[3]}'
12 34 56

match字符串匹配
[root@localhost ~]# awk 'BEGIN{str="safdsajfkdsajlfjdsl";print match(str,"j.*s")}'
7
[root@localhost ~]# awk 'BEGIN{str="safdsajfkdsajlfjdsl";match(str,"j.*s",arry);print arry[0]}'
jfkdsajlfjds

小结

相关推荐

  1. 课时126awk实践_知识_函数1

    2024-05-16 12:44:13       4 阅读
  2. awk数值函数

    2024-05-16 12:44:13       22 阅读
  3. 课时89:流程控制_函数_函数变量

    2024-05-16 12:44:13       4 阅读
  4. 课时90:流程控制_函数_数组传递

    2024-05-16 12:44:13       5 阅读
  5. 【UnityShader预备知识变量和函数

    2024-05-16 12:44:13       8 阅读

最近更新

  1. .Net Core WebAPI参数的传递方式

    2024-05-16 12:44:13       0 阅读
  2. QT--气泡框的实现

    2024-05-16 12:44:13       1 阅读
  3. LeetCode 968.监控二叉树 (hard)

    2024-05-16 12:44:13       0 阅读
  4. leetcode热题100.完全平方数(动态规划进阶)

    2024-05-16 12:44:13       0 阅读
  5. leetcode328-Odd Even Linked List

    2024-05-16 12:44:13       0 阅读
  6. C 语言设计模式(结构型)

    2024-05-16 12:44:13       0 阅读
  7. v-if 与 v-show(vue3条件渲染)

    2024-05-16 12:44:13       0 阅读
  8. kafka防止消息丢失配置

    2024-05-16 12:44:13       0 阅读

热门阅读

  1. 【Python】学生管理系统

    2024-05-16 12:44:13       4 阅读
  2. 2024.5.15晚训题解

    2024-05-16 12:44:13       4 阅读
  3. 【转】VS(Visual Studio)更改文件编码

    2024-05-16 12:44:13       5 阅读
  4. Sping @Autowired @Value @Resourece依赖注入原理

    2024-05-16 12:44:13       4 阅读
  5. spark分布式预测和保存过程中遇到的问题记录

    2024-05-16 12:44:13       4 阅读