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循环查看数组的所有内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值