awk实战5-函数系列-基本字符串函数

awk一个神奇而又强大的功能,绝对是一个开发利器,效率直选!希望这里的一些总结能帮到那些存在困惑的人!

awk实战1-基础语法说明

awk实战2-流程控制语句总结

awk实战3-awk数组技巧

awk实战4-函数系列-算数函数说明

awk实战5-函数系列-基本字符串函数

awk实战6-函数系列-字符串函数说明-asort和sub

awk实战7-函数系列-时间函数

awk实战8-函数系列-字节操作

awk实战9-IO函数-getline和close

awk实战10-IO函数-其他介绍

awk实战11-进阶-10种awk有效应用实战

awk实战12-进阶-再谈awk匹配模式

awk处理小问题-解决局部jar包替换

文章目录

  • awk字符串函数说明--基础函数
    • 1 match-关注指数:☆ ☆ ☆ ☆ ☆
    • 2 index和length-关注指数:☆ ☆ ☆ ☆
    • 3 split和patsplit-关注指数:☆ ☆ ☆ ☆ ☆
    • 4 tolower和toupper-关注指数:☆ ☆ ☆
    • 5 printf和sprintf-关注指数:☆☆☆☆
    • 6 strtonum-关注指数:☆☆☆☆
    • 7 sub和substr-关注指数:☆☆☆☆☆

awk字符串函数说明–基础函数

本文主要介绍awk字符串处理的一些基础函数;

推荐指数:☆ ☆ ☆ ☆ ☆

1 match-关注指数:☆ ☆ ☆ ☆ ☆

match(s, r [, a])

match用于检索字符串s匹配正则表达式r的内容,返回是否匹配,未匹配成功,则返回0;

正则表达式下标a [n,“start”],并且a [n,“length”]提供起始索引每个匹配的字符串和长度子串。如果提供了数组a,则清除a并且
元素1到n填充了与相应的父母相匹配的sr中的大小的子表达式。 a的第0个元素包含与整个匹配的s部分

user@user:~$ echo -e "123 sdf \ndsf kjl \n2343 45 ab" | awk '{var=match($0,/[0-9]+/,a);print var,a[0], a[0,"start"],a[0,"length"]}'
1 123 1 3
0   
1 2343 1 4

2 index和length-关注指数:☆ ☆ ☆ ☆

length用于返回字符串长度,index则用于描述子字符串在源字符串中的位置,如果存在则返回位置,不存在则返回0;

如下所示为一个使用实例:

user@user:~$ awk 'BEGIN {s="i am dingfuwen";b="dingfuwen";print length(s),length(b), index(s,b)}'
14 9 6

3 split和patsplit-关注指数:☆ ☆ ☆ ☆ ☆

split: split(s, a [, r [, seps] ])

split允许把一个字符串分隔为单词并存储在数组中。你可以自己定义域分隔符或者使用现在FS(域分隔符)的值。

##### 指定一个分隔符
user@user:~$ awk 'BEGIN {s="12#34#45#56";split(s,a,"#");print s,a[1],a[2]}'
12#34#45#56 12 34
##### 也可以是正则表达式
user@user:~$ awk 'BEGIN {s="12#34#45#56";var=split(s,a,"[^0-9]");print s,var,a[1],a[2]}'
12#34#45#56 4 12 34


patsplit

user@user:~$ awk 'BEGIN {s="12#34#45#56";var=patsplit(s,a,"#");print s,var,a[1],a[2]}'
12#34#45#56 3 # #
user@user:~$ 

4 tolower和toupper-关注指数:☆ ☆ ☆

作用由名字能很明显推测出,直接给出测试命令:

user@user:~$ awk 'BEGIN {s="abCD EF g is";print tolower(s),"\n",toupper(s)}'
abcd ef g is 
 ABCD EF G IS

5 printf和sprintf-关注指数:☆☆☆☆

printf是输出到终端上
sprintf是将输出保存在一个字符串里- sprintf(fmt, expr-list)

user@user:~$ awk 'BEGIN {s=sprintf("i am %s,and you?","user");printf s}'
i am user,and you?
user@user:~$ awk 'BEGIN {printf("i am %s,and you?","user")}'
i am user,and you?

6 strtonum-关注指数:☆☆☆☆

strtonum(str) 用于将字符串转换成数字,普通数字当成十进制,带0x或者0X则由十六进制转换成十进制;

user@user:~$ awk 'BEGIN {s1="0x16";s2="16";s3="ab";print strtonum(s1),strtonum(s2),strtonum(s3)}'
22 16 0

7 sub和substr-关注指数:☆☆☆☆☆

sub类似于gsub只是替换第一个匹配的子字符串;

substr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分

user@user:~$ awk 'BEGIN {s="sdf sss dfsdf";print substr(s,9)}'
dfsdf
user@user:~$ awk 'BEGIN {s="sdf sss dfsdf";print substr(s,9,3)}'
dfs

你可能感兴趣的:(awk实战,match,awk,基本字符串函数)