awk 內建函式列表

2021-09-08 12:26:07 字數 2275 閱讀 1172

1.gsub

要在整個記錄中替換乙個字串為另乙個,使用正規表示式格式,/目標模式/,替換模式

/。例如改變學生序號4842到4899:

$ awk 'gsub('4842/, 4899) ' grade.txt

j.troll 07/99 4899 brown-3 12 26 26

2.index

查詢字串s中t出現的第一位置。必須用雙引號將字串括起來。例如返回目標字串

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

$ awk 'begin grade.txt

43.length

返回所需字串長度,例如檢驗字串j.troll返回名字及其長度,即人名構成的字元個

數。$ awk '$1=="j.troll" ' grade.txt

7 j.troll

還有一種方法,這裡字串加雙引號。

$ awk 'begin '

144.match

match測試目標字串是否包含查詢字元的一部分。可以對查詢部分使用正規表示式,返

回值為成功出現的字元排列數。如果未找到,返回0,第乙個例子在ancd中查詢d。因其不

存在,所以返回0。第二個例子在ancd中查詢d。因其存在,所以返回ancd中d出現的首位

置字元數。第三個例子在學生j.lulu中查詢u。

$ awk ''

0$ awk ''

3$ awk '$1=="j.lulu" grade.txt

45.split

使用split返回字串陣列元素個數。工作方式如下:如果有一字串,包含一指定分隔

符-,例如ad2-kp9-ju2-lp-1,將之劃分成乙個陣列。使用split,指定分隔符及陣列名。此

例中,命令格式為("ad2-kp9-ju2-lp-1",parts_array,"-"),split然後返回陣列下標數,這

裡結果為4。

還有乙個例子使用不同的分隔符。

$ awk ''

3這個例子中,split返回陣列myarray的下標數。陣列myarray取值如下:

myarray[1]="123"

myarray[2]="456"

myarray[3]="789"

6.sub

使用sub發現並替換模式的第一次出現位置。字串str包含『popedpopopill』,執行下

列sub命令sub(/op/,"op",str)。模式op第一次出現時,進行替換操作,返回結果如下:

『popedpopepill』。

假如grade.txt檔案中,學生j.troll的記錄有兩個值一樣,「目前級別分」與「最高端別分」。只

改變第乙個為29,第二個仍為24不動,操作命令為sub(/26/,"29",$0),只替換第乙個出現

24的位置。

$ awk '$1=="j.troll" sub(/26/, "29", $0)' grade.txt

l.troll 07/99 4842 brown-3 12 29 26

l.transley 05/99 4712 brown-2 12 30 28

7.substr

substr是乙個很有用的函式。它按照起始位置及長度返回字串的一部分。例子如下:

$ awk '$1=="l.transley" ' grade.txt

l.tan

上面例子中,指定在域1的第乙個字元開始,返回其前面5個字元。

如果給定長度值遠大於字串長度, awk將從起始位置返回所有字元,要抽取l.tansley的姓,只需從第3個字元開始返回長度為7。可以輸入長度99,awk返回結果相同。

$ awk '' grade.txt

transley

substr的另一種形式是返回字串字尾或指定位置後面字元。這裡需要給出指定字串及其返回字串的起始位置。例如,從文字檔案中抽取姓氏,需操作域1,並從第三個字元開始:

$ awk '' grade.txt

troll

transley

還有乙個例子,在begin部分定義字串,在end部分返回從第t個字元開始抽取的子串。

$ awk ' end '

8設定檔名為一變數,管道輸出到awk,返回不帶副檔名的檔名。

$ str="mydoc.txt"

$ echo $str | awk ''

mydoc

設定檔名為一變數,管道輸出到awk,只返回其副檔名。

$ str="mydoc.txt"

$ echo $str | awk ''

txt

Python內建函式列表

函式 點選可跳轉示例 用途abs 返回數字絕對值 all 判斷給定的可迭代引數 iterable 中的所有元素是否都為 true,如果是返回 true,否則返回 false any 判斷給定的可迭代引數 iterable 是否全部為 false,則返回 false,如果有乙個為 true,則返回 t...

awk內建函式

awk的內建函式split允許把乙個字串分隔為單詞並儲存在陣列中。可以自己定義域分隔符或者使用現在fs 域分隔符 的值。split string,array,field separator split string,array 如果第三個引數沒有提供,awk就預設使用當前fs值。time 12 34...

AWK學習筆記八 AWK內建函式

執行作業系統命令然後返回給awk函式,system函式執行string指定的命令,返回執行命令返回的狀態作為它的值。比如下面 段 end系統管理員在awk程式完成處理輸入之後,會傳送email。awk程式被廣泛用來處理含有時間戳的log檔案,表明什麼時候乙個log記錄被寫入。systime 這個函式...