1. 判断键值是否存在
seq 10 | awk '{a[$1]}END{if("1" in a)print "ok";else print "no"}' #建立数组a,$1作为数组下标,判断 "1" 是否存在数组中。
2. 去重
awk -F":" '{a[$NF]}END{for(i in a)print i}' /etc/passwd #建立数组a,最后一个域作为数组下标,循环数组a,数组索引不存在重复。
3. substr截取字符串
echo abcde|awk '{print substr($0,1,3)}' #截取整个域,1,3字符
4. 计算$2,$NF重复次数
awk '{a[$1]++;b[$NF]++}END{for(k in a)print "\t"k,a[k];for(i in b)print i,b[i]}' 1
5. split 切割
echo 12:34:56|awk '{split($0,a,":");print a[1]}' #对$0进行切割,建立数组a,切割符: ,打印a[1] 下标为1,第一个域
6. concatenation 连接,可以合并老字符串来创建新字符串
seq 10|awk '{a=a $1 " "}END{print a}'
7. if流程控制
seq 10|awk '{ if($1>5) { print $1 } else if($1>4){print $1} else print "no" }'
8. 读取文件,去空行重复行后,开始从1开始计算行数,总行数*0.95取出值
awk 'NF&&!a[$1]++{b+=1;c[b]=$1}END{print c[int(b * 0.95 )]}'
阅读(1961) | 评论(0) | 转发(0) |