shell脚本--文本处理三剑客之awk中的字符串函数

 字符串函数对照表

                            字符换函数对照表
------------------------------------------------------------------------------
函数名                    解释                        函数返回值
------------------------------------------------------------------------------
length(str)           计算字符串的长度                整数长度值
index(str1,str2)      在str1中查str2的位置           返回值为索引位置,从1计数
tolower(str)          转换为大写                     转换后的小写字符串
toupper(str)          转换为大写                     转换后的大写字符串
substr(str,m,n)       从string从m字符开始截取n位        截取后的子串
split(str,arr,fs)     按fs切割字符串,结果保存arr       切割后的子串的个数
match(str,RE)         在str中按照RE查找,返回位置       返回索引位子


sub(RE,RepStr,Str)    在str中搜索符合RE的字串并将
                      其替换为Restr,只替换第一个        替换的个数


gsub(RE,RepStr,Str)   在str中搜索符合RE的字串并将
                      其替换为Restr,替换所有           替换的个数

示例:

length

awk 'BEGIN{FS=":"}{print length($1),length($2),length($3),length($4),length($5),length($6),length($7)}' passwd

 awk -f length.awk passwd 和上面的执行效果一样 如下是length.awk内容

BEGIN{
	FS=":"
}

{
	while(num<NF)
	{
	num+=1
	printf "%d ",length($num)
	}
	num=0
	printf "%s" ,"\n"
}

index(str,str2) 

$ awk 'BEGIN{str="I have a dream";location=index(str,"ea");print location}'
12

 match(str,"ea")

$ awk 'BEGIN{str="I have a dream";location=match(str,"ea");print location}'
12

大小写 

$ awk 'BEGIN{str="I have a dream";print  tolower(str)}'
i have a dream



$ awk 'BEGIN{str="I have a dream";print  toupper(str)}'
I HAVE A DREAM

截取

$ awk 'BEGIN{str="I have a dream";print  substr(str,1,3)}'
I h

 split(str,arr,fs)切割

$ awk 'BEGIN{str="I have a dream";print  split(str,aa," "), aa[1]}'
4 I

 gsub(RE,RepStr,Str) 全部替换 ,  sub(RE,RepStr,Str)替换第一个

$ awk 'BEGIN{str=" I 234 YOU 9002 Done";print gsub(/[0-9]+/,"$",str) , str}'
2  I $ YOU $ Done


$ awk 'BEGIN{str=" I 234 YOU 9002 Done";print sub(/[0-9]+/,"$",str) , str}'
1  I $ YOU 9002 Done
原创文章 33 获赞 38 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ChaoLi_Chen/article/details/105774363