awk內建函數之字符串函數

index(原字符串,匹配字符串)

length(字符串)

match(原字符串,正則表達式)

split(原字符串,數組名稱,分隔字符)

sprintf(格式字符串,項1,項2,...)

sub(正則,替換的新字符串,原字符串)

gsub(正則表達式,替換的新字符串,原字符串 )

substr(字符串,起始位置,截取長度)

tolower(字符串)

toupper(字符串)




1. index(原字符串,匹配字符串)

若“原字符串”含有“匹配字符串”,則返回其在原字符串中第一次出現的位置,若未曾出現則返回0。

例 :

# awk 'BEGIN {
print index("33080801030","0");
print index("3380801030","0");
}'
3
4

2.length(字符串)

返回參數“字符串”的長度。

範例:

# awk 'BEGIN {print length("chenss")}'
6

3.match(原字符串,正則表達式)

awk會在“原字符串”中匹配合乎“正則表達式”的字符串.若匹配到的字符串有多個, 則以“原字符串”中最左側的字符串爲準。

如果匹配到字符串後,match函數則會返回”正則表達式“匹配到的字符串的位置。

並設定RSTART變量爲”匹配字符串“在”原字符串“中的位置,若未匹配到則等於0 ;

設定RLEGTH變量爲匹配的字符串的長度, 若未匹配則等於-1。

範例:

# awk 'BEGIN {
match("The best preparation for tomorrow is doing your best today",/best/);
print RSTART;
print RLENGTH;
}'
5
4

範例:

# awk 'BEGIN {
match("The best preparation for tomorrow is doing your best today",/chenss/);
print RSTART;
print RLENGTH;
}'
0
-1

4.split(原字符串,數組名稱,分隔字符)

awk將依所指定的“分隔字符”來分隔“原字符串”,並以指定的“數組名稱”記錄各個被分隔的字段。如果第三個參數沒有提供,awk就默認使用當前FS值。

範例:

# awk 'BEGIN {
T="The best-preparation-for-tomorrow is doing your best-today";
split(T,Arry,"-");
print Arry[2];
split(T,Arry);
print Arry[2];
}'
preparation
best-preparation-for-tomorrow

5.sprintf(格式字符串,項1,項2,...)

用法與printf()類似. 不同的是sprintf()將打印出的結果當成一個字符串返回。一般用sprintf()來格式化字符串。

範例:

# awk 'BEGIN {
print sprintf("%.2f",88);
print sprintf("%.x",15);
}'
88.00
f

6.sub(正則表達式,新字符串,原字符串)

sub( )將“原字符串”中第一個匹配“正則表達式”的字符串替換成“新字符串”,"新字符串"中可用"&"來追加字符串 ;當第二個參數爲空字符串("")時,sub()將執行的是去除“正則表達式”所匹配的最左側字符串。

sub( )中第三個參數(原字符串)若未指定,則其預設值爲$0.

範例:

# awk 'BEGIN {
T="The best-preparation-for-tomorrow is doing your best-today";
sub(/-/,".",T);
print T;
sub(/today/,"&!",T);
print T;
sub(/-/,"",T);
print T
}'
The best.preparation-for-tomorrow is doing your best-today
The best.preparation-for-tomorrow is doing your best-today!
The best.preparationfor-tomorrow is doing your best-today!

通過 sub() 與 match() 的配合使用,可取出所有匹配的字符串。

範例:

# awk 'BEGIN {
T="p12-p34 p56-p78";
while(match(T,/[0-9]+/) > 0)
{
print substr(T,RSTART,RLENGTH);
sub(/[0-9]+/,"",T);
}
}'
12
34
56
78

7.gsub(正則表達式,替換的新字符串,原字符串 )

用法與sub()函數一樣, 唯一不同點是 gsub函數使所有被正則表達式匹配的字符串都發生替換

範例:

# awk 'BEGIN {
T="The best-preparation-for-tomorrow is doing your best-today";
gsub(/-/,".",T);
print T;
gsub(/^/,"&BEGIN: ",T);
print T;
gsub(/best/,"&+",T);
print T
}'

8.substr(字符串,起始位置,截取長度)

返回從起始位置起,指定長度的字符串;若未指定長度, 則返回從起始位置到字符串末尾的子字符串。

範例:

# awk 'BEGIN {
T="The best-preparation-for-tomorrow is doing your best-today";
print substr(T,4,17);
print substr(T,4);
}'
 best-preparation
 best-preparation-for-tomorrow is doing your best-today

9.tolower(字符串)

參數“字符串”中的大寫字母替換成小寫

範例:

# awk 'BEGIN {print tolower("AbCd")}'
abcd

10.toupper(字符串)

範例:

參數“字符串”中的小寫字母替換成大寫

# awk 'BEGIN {print toupper("AbCd")}'
ABCD


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