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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值