awk字串函式(二)

2021-07-02 12:22:00 字數 1516 閱讀 1322

substr函式 substr函式返回從字串指定位置開始的乙個子串。如果指定了子串的長度,則返回字串的相應部分。如果指定的長度超出了字串的實際範圍,則返回其實際內容。格式

substr

(字串

,起始位置

)substr

(字串

,起始位置

,子串長度

) 範例

$ awk 

'' filename

claus

說明:在字串"santa claus" 中,列印從位置7開始、長度為6個字元的子串。

match函式:match函式返回正規表示式在字串中出現的位置,如果未出現,則返回0。match函式把內建變數rstart設為子串在字串中的起始位置, rlength則設為子串的長度.這些變數可以被substr函式用來提取相應模式的子串。格式

match

(字串

,正規表示式

) 範例

$ awk 

'end' filename

10說明:正規表示式/[a-z]+$/的意思是查詢在字串尾部連續出現的大寫字母.找到的子串usa是從字串"good ole usa"的第10個字元開始的。如果字串未能匹配到正規表示式,則返回0。範例

$ awk 

'end' filename

103$ awk 

'begin;\

end' filename

usa

說明:1.變數rstart被match函式設定為匹配到的正規表示式在字串中的起始位置。變數rlength則被設為子串的長度。

2.substr函式在變數line中查詢子串,把rstart和rlength的值(由match函式設定)作為子串的起始位置和長度。

split函式 split函式使用由第3個引數指定的字段分隔符,把字元取拆分成乙個陣列。如果沒有提供第3個引數,awk將把fs 的當前值作為字段分隔符。格式

split

(字串

,陣列,字段分隔符

)split

(字串

,陣列) 範例

$ awk 

'begin' filename

說明:split函式把字串12/25/2001拆分為陣列date。以正斜槓作為字段分隔符。陣列date的下標從1開始。awk將列印陣列date的第2個元素。

sprinf函式 sprintf函式返回乙個指定格式的表示式。可以在sprintf函式中使用printf函式的格式規範。格式

variable 

= sprintf

("含有格式說明的字串"

,表示式

1,表示式

2,...

,表示式n

) 範例

$ awk 

'' filename

說明:按照printf的規範設定第1個和第3個字段的格式(乙個左對齊、長度為15的字串和乙個右對齊、長度為6個字元的浮點數)。結果被賦給使用者自定義的變數line。請參見printf函式。

參考資料:

awk 字串函式

awk 提供了許多強大的字串函式,見下表 awk內建字串函式 gsub r,s 在整個 0中用s 替代r gsub r,s,t 在整個t中用s 替代r index s,t 返回s 中字串 t的第一位置 length s 返回s 長度match s,r 測試s 是否包含匹配 r的字串 split s,...

awk字串函式總結

在這裡總結一下awk的字串函式。1.長度函式length 2.分段函式split 語法如下 split input string,output array,separator split函式將乙個字串分隔到乙個陣列中。它有三個引數,第乙個為輸入字串,也就是要處理的字串 第二個為乙個輸出陣列 第三個為...

awk內建字串函式

awk內建字串函式 gsub r,s 在整個 0中用s替代 r awk gsub name xingming temp gsub r,s,t 在整個t中用 s替代r index s,t 返回 s中字串 t的第一位置 awk begin temp 返回4 length s 返回 s的長度 match ...