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
相关文章
相关标签/搜索