热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

awk流程控制

4.awk流程控制问题本案例要求了解awk的流程控制操作,可自行设置awk语句来有验证以下操作:if分支结构(双分支、多分支)whilefor循环结构break、continue



4.awk流程控制

问题

本案例要求了解awk的流程控制操作,可自行设置awk语句来有验证以下操作:

if分支结构(双分支、多分支)

while/for循环结构

break、continue、next等其他控制语句

步骤

实现此案例需要按照如下步骤进行。

步骤一:awk过滤中的if分支结构

1)单分支

统计/etc/passwd文件中UID小于或等于500的用户个数:

[root@svr5 ~]# awk -F: ‘BEGIN{i=0}{if($3<=500){i++}}END{print i}’ /etc/passwd

39

统计/etc/passwd文件中UID大于500的用户个数:

[root@svr5 ~]# awk -F: ‘BEGIN{i=0}{if($3>500){i++}}END{print i}’ /etc/passwd

28

统计/etc/passwd文件中登录Shell是“/bin/bash”的用户个数:

[root@svr5 ~]# awk -F: ‘BEGIN{i=0}{if(7 /bash7~/bash7 /bash/){i++}}END{print i}’

/etc/passwd

29

统计/etc/passwd文件中登录Shell不是“/bin/bash”的用户个数:

[root@svr5 ~]# awk -F: ‘BEGIN{i=0}{if(7! /bash7!~/bash7! /bash/){i++}}END{print i}’

/etc/passwd

38

2)双分支

分别统计/etc/passwd文件中UID小于或等于500、UID大于500的用户个数:

[root@svr5 ~]# awk -F: ‘BEGIN{i=0;j=0}{if($3<=500){i++}else{j++}}END{print i,j}’ /etc/passwd

39 28

分别统计/etc/passwd文件中登录Shell是“/bin/bash”、 登录Shell不是“/bin/bash”的用户个数:

[root@svr5 ~]# awk -F: ‘BEGIN{i=0;j=0}{if(7 /bash7~/bash7 /bash/){i++}else{j++}}

END{print i,j}’ /etc/passwd

29 38

3)多分支

分别统计/etc/passwd文件中登录Shell是“/bin/bash”、“/sbin/nologin”、其他的用户个数:

[root@svr5 ~]# awk -F: ‘BEGIN{i=0;j=0;k=0}{if(7 /bash7~/bash7 /bash/){i++}

else if(7 /nologin7~/nologin7 /nologin/){j++}else{k++}}END{print i,j,k}’ /etc/passwd

29 33 5

步骤二:awk过滤中的while/for循环结构

1)while循环

统计/etc/passwd文件内“root”出现的次数。

—— 分析:以“:”或“/”做分隔,针对每一行的每一列进行比对,如果包含“root”,则次数加1。其中,逐行处理直接由awk完成,逐列处理交给while循环,通过i变量依次取$1、22、……、2、……、NF进行检查;变量j在预处理时赋值0,没匹配一个字段加1。

[root@svr5 ~]# awk -F [

推荐阅读
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • Java程序员必会的40个Linux命令!
    你知道的越多,不知道的就越多,业余的像一棵小草!你来,我们一起精进!你不来,我和你的竞争对手一起 ... [详细]
  • 文章目录一、awk简介二、awk的两种形式语法格式1options:2command:三、awk工作原理四、记录与字段相关内部变量:五、格式化输出:printf函数六、awk模式和 ... [详细]
  • BashShell作为Linux的指定合作伙伴我们已经再熟悉不过了,使用Bash可以快速编写简单的脚本方便我们的日常比如善用vim,awk和sed三剑客,也可以创建十分复杂的逻辑, ... [详细]
  • linux 循环 cpu使用率脚本,Linux Shell脚本监视CPU利用率,达到设置的CPU利用率时发送电子邮件...
    有很多开源监控工具可用于监控Linux系统性能,当系统达到给定的阈值限制时,它将发送电子邮件警报。它监视CPU利用率、内存利用率、交换利用率、磁盘空间利 ... [详细]
  • Linux 文本处理利器--Awk常用命令
    简介:在LinuxUNIX系统中,awk是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输 ... [详细]
  • 1.判断磁盘使用空间df-h|grep-vFile|seds%g|awk{if($580)print使用空间超过了80%:,$6}或#!binbash#Filename:di ... [详细]
  • #!binbashusrlocalmysqlbinmysqldump#保存备份个数number2#备份保存路径backup_dirrootmysqlbackup#日期dddate% ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
author-avatar
本多天舞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有