Shell脚本,awk使用if,for进行流程控制

Shell脚本,awk流程控制,支持for,if等

一、单分支if判断
1、awk ‘{指令}’ dir
awk -F: ‘BEGIN{x=0} {if($3>=1000){i++}}END{print i}’ /etc/passwd
统计文件中uid大于等于1000的内容的数量。

在这里插入图片描述

2、awk -F: ‘{if($1==“root”){print $1,$3}}’ /etc/passwd
awk风格与编程语言相似,常量使用双引号,而不可以使用单引号或者反引号

在这里插入图片描述

二、多分支if判断
1、双分支if…else
awk -F: ‘{if($3>=1000){i++}else{j++}} END{print i,j}’ /etc/passwd
判断uid1000以上的用户的个数和1000一下的用户个数

在这里插入图片描述

2、多分支,if…else if…else
awk -F: ‘{if($30){print $1}else if($31000){print $1}else{print $7}}’ /etc/passwd

在这里插入图片描述

三、for循环,awk的for采用c语言的语法格式
awk ‘BEGIN{for(i=1;i<=5;++i){print i}}{print}’ /etc/passwd
打印用户信息之前打印数字1-5

在这里插入图片描述

四、awk数组和应用
1、定义数组
格式:数组名[下标]=元素值
awk ‘BEGIN{name[0]=“TOM”;name[1]=“JERRY”;print name[0],name[1]}’
注意print后面的变量用,分隔,会在同一行用空格分开打印,如果用分号并写两个print,就会分别打印两行内容。

2、调用数组
数组名[下标]

3、遍历数组
for(变量名 in 数组名){print 数组名[变量]}

在这里插入图片描述

数组的定义不可以是name=“1234”,print name[1],这种用法在awk中是有语法错误的
在这里插入图片描述

例子:
1、awk ‘BEGIN{name[0]=“TOM”;name[1]=“JERRY”;print name[0],name[1]}’
在屏幕上打印TOM,JERRY

在这里插入图片描述

2、awk ‘{array[$1]++}END{for(i in array){print i,array[i]}}’ dir
打印指定文件中第一列内容重复的内容的重复次数

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值