awk經常使用函數用法

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
相關文章
相關標籤/搜索