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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章