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字符串处理的一些基础函数;
推荐指数:☆ ☆ ☆ ☆ ☆
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
length用于返回字符串长度,index则用于描述子字符串在源字符串中的位置,如果存在则返回位置,不存在则返回0;
如下所示为一个使用实例:
user@user:~$ awk 'BEGIN {s="i am dingfuwen";b="dingfuwen";print length(s),length(b), index(s,b)}'
14 9 6
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:~$
作用由名字能很明显推测出,直接给出测试命令:
user@user:~$ awk 'BEGIN {s="abCD EF g is";print tolower(s),"\n",toupper(s)}'
abcd ef g is
ABCD EF G IS
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?
strtonum(str) 用于将字符串转换成数字,普通数字当成十进制,带0x或者0X则由十六进制转换成十进制;
user@user:~$ awk 'BEGIN {s1="0x16";s2="16";s3="ab";print strtonum(s1),strtonum(s2),strtonum(s3)}'
22 16 0
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