awk學習筆記 3

2021-06-25 21:33:18 字數 2553 閱讀 4110

內建函式

sub(正規表示式,替換串)

sub(正規表示式,替換串,目標串)

說明:如果不指定目標串,則預設在記錄中查詢能夠匹配正規表示式的最長且最靠左的子串,然後用替換串取代找到的子串。如果指定了目標串,就在目標串中查詢並替換。

gsub(正規表示式,替換串)

gsub(正規表示式,替換串,目標串)

說明:如果不指定目標串,則預設在記錄中查詢能夠匹配正規表示式的每個子串,然後用替換串取代找到的子串。如果指定了目標串,就在目標串中查詢並替換。

index(字串,子串)
說明:index函式返回子串在字串中第一次出現的位置。偏移量從位置1開始計算。

length(字串)
說明:length函式返回字串中字元的個數。如果未指定引數,則length函式返回計量中的字元個數。

substr(字串,起始位置) 

substr(字串,起始位置,子串長度)

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

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

awk 'end' filename

split(字串,陣列,字段分隔符)

split(字串,陣列)

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

sprintf("含有格式說明的字串",表示式1,表示式2, ..., 表示式n) 

awk '' filename

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

int(x)
說明:int函式將捨去小數點後的所有數字,生成乙個整數。int函式不執行四捨五入操作。

tolower(string)

toupper(string)

說明:tolower函式返回的是乙個字串,其中所有的大寫字母均已轉換成小寫字母,非字母字元不發生變化。類似的,tolower函式也返回字串,不過是將所有的小寫字母轉換成大寫字母。注意,字串必須加雙引號。

systime() 

awk 'begin'

說明:systime函式將返回自2023年1月1日以來經過的時間(以秒為單位)。

strftime([format specification][,timestamp]) 

awk 'begin'

awk 'begin'

awk 'begin'

說明:strftime函式使用c庫的strftime函式對時間進行格式化,格式形式可以為%t,%d等形式,時間戳的格式和systime()函式返回值所採用的格式相同,如果不使用時間戳,則以當前的時間為預設時間。

rand()

awk ' filename

說明:rand函式生成乙個大於或等於0、小於1的偽隨機浮點數。每次執行程式都列印出同一組數字。可以使用srand函式為rand函式的種子設乙個新值,否則,每次呼叫rand都只會重複出現同一數列。

srand(x)
說明:如果未指定引數,srand函式會根據當前時刻為rand函式生成乙個種子。srand(x)則把x設成種子。通常,程式應該在執行過程中不斷的改變x的值。

ksh和bash都能產生隨機數,內嵌shell變數random可以用於這個目的。每次訪問時,這個變數將產生介於0到32767範圍之內的乙個隨機整數。

自定義函式

指令碼中凡是可以出現模式操作規則的位置都可以放置使用者自定義的函式。

函式名(引數,引數,引數, ...)
變數以引數值的方式傳遞,且僅在使用它的函式中區域性有效。函式使用的只是變數的副本。陣列則通過位址或引用被傳遞,因此,可以在函式中直接修改陣列的元素。函式中的任何變數,只要不是從引數列表中傳來的,就都被視為全域性變數,也就是說,該變數對整個awk程式都是可見的,而且,如果它在函式中發生了改變,即在整個程式中發生了改變。在函式中提供區域性變數的唯一途徑就是將它們加入到引數列表中。這類引數通常放在引數列表的末端。當呼叫函式時,如果沒有指定某個形參的值,該引數就會被初始化為空。return語句會把控制權交還給呼叫者,可能還會返回乙個值。

awk學習筆記

單詞計數 cat filename awk end 排序演算法 bin bash function f while n 1 do f 1 shift done wait 顯示特殊符 var i am a student echo var awk 結果為 am a i student echo var...

awk學習筆記

1 將第一列重複的元素去掉,只保留第乙個 root centos awk test cat sed u.txt haha 1 nihao 1 haha 3 hehe 4 heihei 5 heihei 6 1 haha 1 heihei root centos awk test awk f a 1 ...

AWK學習筆記

1.awk是三個 人名的縮寫,他們是 aho peter weinberg和 brain kernighan。awk是一種樣式掃瞄與處理工具。但其功能卻大大強於sed和grep。awk支援對記錄和字段的處理,其中對字段的處理是grep和sed不能實現 的,這也是awk優於二者的原因之一。2.與其它u...