length函數返回字符串的長度正則表達式
# echo "xiaoming235" | awk '{print length}' 11 # awk -F ":" 'length($NF)>13 {print $0}' /etc/passwd shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
gsub使得在全部正則表達式被匹配的時候都發生替換數組
0001|20081223efskjfdj|EREADFASDLKJCV 0002|20081208djfksdaa|JDKFJALSDJFsddf 0003|20081208efskjfdj|EREADFASDLKJCV 0004|20081211djfksdaa1234|JDKFJALSDJFsddf 以'|'爲分隔, 現要將第二個域字母前的數字去掉,其餘地方都不變, cat data.test | awk -F "|" 'gsub(/[0-9]+/,"",$2)' | sed 's@ @|@'g cat data.test | awk -F "|" 'BEGIN{ OFS="|"} {gsub(/[0-9]+/,"",$2);print $0}'
sub匹配第一次出現的符合模式的字符串,至關於 sed 's//' 。bash
gsub匹配全部的符合模式的字符串,至關於 sed 's//g' 。tcp
split函數把一個字符串分割爲段保存到數組當中ide
split(string,array_name,filed separator) # echo "11:22:33" | awk '{split($0,a,":");{printf("%d\n%d\n%d\n", a[1],a[2],a[3])}}' 11 22 33
計算2013年一月每人工資數
Tom 2012-12-11 5 3000
John 2013-01-13 4 1000
vivi 2013-01-18 4 2800
Tom 2013-01-20 3 2500
John 2013-01-28 6 3500
awk '{split($2,a,"-");if(a[2]==01){b[$1]+=$NF}}END{for(A in b){print A,b[A]}}' test.t
查看TCP鏈接狀態函數
# netstat -tuan | awk '/^tcp/{listen[$NF]++}END{for(A in listen){ print A,listen[A]}}'spa
ESTABLISHED 2字符串
LISTEN 4string
substr截取字符串it
substr(s,p)字符串s中從p開始的部分
substr(s,p,n)字符串s中p開始且p後長度爲n的部分
# echo "xiaoming235" | awk '{print substr($0,3,2)}' ao # echo "xiaoming235" | awk '{print substr($0,3)}' aoming235