AWK高级应用

if(条件){指令}
if(条件){指令1}else{指令2}
if(条件1){指令1}else if(条件2){指令2}else{指令n}

[root@server0 ~]# awk -F: '{if($3==0){print}}' /etc/passwd

[root@server0 ~]# awk -F: '{if($3<=2){print "aaa"}else{print "xyz"}}' /etc/passwd

[root@server0 ~]# awk -F: 'BEGIN{x=0;y=0}{if($4<10){x++}else if($4>1000){y++}}END{print x,y}' /etc/passwd   结合BEGIN和END使用,找出第四列小于10,大于1000的数量
9 1

数组 能够储存多个不同值的特殊变量
数组名称[下标]=值

a[1]=100
a[2]=200

[root@server0 ~]# awk 'BEGIN{a[1]=100;a[2]=200;print a[1],a[2]}' 定义数组a,下标分别是1于2,然后输出该数组对应的下标值
100 200
[root@server0 ~]# awk 'BEGIN{a[1]=100;a[1]++;print a[1]}'
101
[root@server0 ~]# awk 'BEGIN{a["a"]="abc";print a["a"]}'
abc 数组可以不用存数字

for循环结合数组使用(经常使用再END中)是,循环的是下标
for(变量 in 数组名){print 变量,数组名[变量]}

[root@server0 ~]# cat aaa
abc
abc
xyz
opq
xyz
abc
[root@server0 ~]# awk '{a[$1]++}END{for(i in a){print i,a[i]}}' aaa
opq 1
abc 3
xyz 2

{a[$1]++} 逐行任务,相当于收集数据,然后再END任务中用法for循环查看数组的所有内容

发布了25 篇原创文章 · 获赞 2 · 访问量 594

猜你喜欢

转载自blog.csdn.net/f5500/article/details/103902087