1 算術運算子
與其他程式語言基本相同,支援浮點數計算,x=5/2,print x直接輸出計算結果
2 賦值運算子
= += -= *= /= %= ^=
3 條件運算子
expression?value1:value2
eg.grade=($2>90?"a":"b")
print grade
4 邏輯運算子
&& || !
$2 > 80 && $3 > 80 && $4 > 80 && $5 >80 // 輸出所有的字段都大於80的記錄
5 關係運算子
~ 匹配運算子 $1~/^t/表示匹配第1個字段以字元t開頭的記錄
!~ 不匹配運算子 $1!~/a/表示匹配第1個字段不含有字元a的記錄
$1~/^k/ 匹配第1個字段以字元k開頭的記錄
6 字串函式
index(string1,string2)
定位string2在string1中出現的位置,如果出現多次,則返回第一次出現的位置。如果不包含string2,則返回0。區分大小寫。
print index("hello,world.","world") // 7
length(string)
返回值為整數,表示字串string的長度
match(string,regexp)
其功能是在字串string中搜尋匹配正規表示式的子串。使用者可以用rstart和rlength來獲取相關的返回值。rstrat表示子串在父串中出現的位置,匹配不成功返回0。rlength表示匹配到子串的長度,匹配不成功返回-1。
spilt(string,array,seperator)
將乙個字串根據指定的分隔符拆分成乙個陣列。第乙個引數為要拆分的字串,第2個引數用來儲存拆分結果的陣列,第3個引數用來指定分隔符,分隔符可以用正規表示式來表示。
eg.string="5p12p89"
spilt(string,arr,/[pp]/)
print arr[1]
print arr[2]
print arr[3]
// 結果:5 12 89
作為分隔符的字元並不出現在拆分結果中
sub(regexp,replacement,string)和gsub(regexp,replacement,string)
替換字串中的子串,前者替換第一次出現的,後者替換所有
如果sub與gsub函式的第二個引數為空串,則表示將符合匹配規則的字串刪除
substr(string,start,[length])
擷取指定長度的子串。第3個引數可以忽略,表示從開始位置一直擷取到父串的末尾
通過match()和substr()可以將父串中全部符合規則的子串提取出來。
eg.begin
}7 算術函式
rand() 返回介於0與1之間的隨機數
srand([x]) 以x為種子返回乙個隨機數
8 陣列的定義和賦值
awk並沒有提供陣列定義的語句,當使用者為陣列第1個元素賦值時,awk便會自動建立該陣列。
awk陣列的下標從1開始計算,陣列的第1個元素的下標為1。也支援關聯陣列,所謂關聯陣列,是指以字串為下標的陣列。
在定義陣列時,使用者並不需要指定陣列的資料型別,實際上awk可以儲存任何簡單型別的資料,例如字串、整數以及浮點數型別的資料。
賦值:array[n]=value
引用:array[n]
eg.begin
9 遍歷陣列
陣列的長度可以使用length()函式獲得
當陣列下標連續且是整數值作為下標,可以使用for迴圈進行遍歷。如果下標是非連續的或者字串,則不可以使用上述方法。
awk提供了一種更為便捷的機制來遍歷陣列元素:
for (n in array)
在這種方法中,陣列元素的下標預設是無序的,所以導致通過以上語句得到的陣列元素也是無序的。
另外在for迴圈中,所輸出的下標是使用者定義時使用的下標,並沒有轉換成整數。
要按順序遍歷陣列,必須使用下標來引用陣列元素。
eg.begin
}// 結果:512
23tom
john
3.1415
print n:4a
99123
shell程式設計 文字處理利器awk命令(一)
awk是一種處理文字資料的程式語言,它的設計使它非常適合於處理由行和列組成的文字資料。1 基本語法 awk pattern 以上語法表示當某個文字行符合pattern指定的匹配規則時,執行actions所執行的操作。兩者必須保證有乙個,如果省略pattern則表示對所有的文字行執行actions所表...
sed Shell 文字處理利器
sed全稱是stream editor,是乙個用於文字過濾和替換的流編輯器,它是乙個管道命令,資料來源來自stdin,它的最小處理單位是行 與awk區分 語法如下 sed nfri 動作 n 使用安靜模式。只有經過sed處理的行才會輸出到螢幕上 f 直接將sed的動作寫在乙個檔案內,f filena...
awk基礎篇 Shell 文字處理利器
sed傾向於以行為單位進行處理,而awk更擅長將一行分為幾段進行處理。awk用法 awk 條件型別1 條件型別2 awk 條件型別1 條件型別2 filenameawk支援兩種資料 既可以通過管道獲取資料,也可以從檔案獲取資料。awk主要是處理每一行的字段內的資料,而預設的字段分割符為空格或tab。...