天天看點

awk 字元串函數

awk

提供了許多強大的字元串函數,見下表:

内置字元串函數

gsub(r,s)    

在整個

$0

中用

s

替代

gsub(r,s,t)    

t

index(s,t)    

傳回

中字元串

的第一位置

length(s)    

長度

match(s,r)    

測試

是否包含比對

r

的字元串

split(s,a,fs)    

fs

上将

分成序列

sprint(fmt,exp)    

傳回經

fmt

格式化後的

exp 

sub(r,s)    

中最左邊最長的子串代替

substr(s,p)    

傳回字元串

中從

p

開始的字尾部分

substr(s,p,n)    

開始長度為

n

的字尾部分

詳細說明一下各個函數的使

用方法。

gsub

函數有點類似于

sed

查找和替換。它允許替換一個字元串或字元為另一個字元串或字

符,并以正規表達式的形式執行。第一個函數作用于記錄

,第二

函數允許指定

目标,然而,如果未指定目标,預設為

index(s,t)

函數傳回目标字元串

中查詢字元串

的首位置。

length

函數傳回字元串

字元

長度。

match

函數測試字元串

是否包含一個正規表達式

定義的比對。

split

使用域分隔

字元串

劃分為指定序列

a

sprint

函數類似于

printf

函數

(

以後涉及

)

傳回基本輸出格式

結果字元串

exp

sub(r,s)

函數将用

中最左邊最長的子串,該子串被

(r)

比對。

sub(s,p)

在位置

後的字尾。

substr(s,p,n)

同上,并指定子串長度為

現在看一看

中這些字元串函數的功能。

1.gsub 

要在整個記錄中替換一個字元串為另一個,使用正規表達式格式,

/

目标模式

,替換模式

。例如改變學生序号

4842

4899

$ awk 'gsub('4842/, 4899) {print $0}' grade.txt 

J.Troll 07/99 4899 Brown-3 12 26 26 

echo "i am hifdafafdst"|awk '{gsub(/am/,"abcc",$0);print $0}' 

i abcc hifdafafdst 

2.index 

查詢字元串

出現的第一位置。必須用雙引号将字元串括起來。例如傳回目标字元串

Bunny

ny

出現的第一位置,即字元個數。

$ awk 'BEGIN {print index("Bunny", "ny")} grade.txt 

3.length