awk 中if和for while

一、awk嵌套if判断语句

格式如下:

if(表达式)

{语句1}

else if(表达式)

{语句2}

else

{语句3}

如果if后边的语句块是的单个语句,{}可以不用写,如果是多条语句,必须用{}括起来,表示它们都属于一个if的执行语句

格式:

if(表达式)

{语句1;语句2;语句3;}

例子1:

[root@centos-1 ~]# vi a

#!/bin/bash

awk -F: '{

if ($1 == "root")

{

print "这是超级用户";

}

else

{

print "这是普通用户";

}

}' /etc/passwd

执行结果

[root@centos-1 ~]# sh a

这是超级用户

这是普通用户

这是普通用户

这是普通用户

这是普通用户

 

二、多if嵌套

 

例子:

#!/bin/bash

awk -F: '{

if ($NF == "/sbin/nologin" )

     {

if ( $1 == "adm")

        {

                print "benet"

        }

if ( $1 == "ftp")

        {

                print "accp"

        }

}

}' /etc/passwd

三、awk中的for循环

格式1:

for (i in 取值列表)

{执行语句}

 

格式2:

for (变量;循环条件;表达式)

{执行语句}

如果for后边的语句块是的单个语句,{}可以不用写,如果是多条语句,必须用{}括起来,表示它们都属于一个for循环的执行语句

格式:

for (变量;循环条件;表达式)

{执行语句1;执行语句2;执行语句3}

例子1:动作没有用{}扩起来。用;结束动作语句。

awk 'BEGIN{a=0;for(i=0;i<=100;i++)a+=i;print a}'

5050

a+=1;  :这里的分号表示for的一个结束点,a+=i属于for的执行语句。而print a结束后才执行

如果将{a+=i;print a}用大括号括起来就是另外一个意思了。这两句都都是for的执行语句了。

结果如下:

[root@localhost ~]# awk 'BEGIN{a=0;for(i=0;i<=100;i++){a+=i;print a}}'
0
1

............

............

4851
4950
5050

 

例子2:动作用{}括起来,没有用;结束

#!/bin/bash

awk 'BEGIN{

{a=0}

for (i=0;i<=100;i++)

{a+=i}

print a

}'

这对大括号说明里边的所有动作都在BEGIN当中的。

注意:上述的两个例子都是在BEGIN中执行的。因为我们是在BEGIN{}里边执行的动作。

也就是说,我们在用awk计算的时候,直接在BEGIN{}部分中就可以完成

 

例子:

[root@centos-1 ~]# awk 'BEGIN{a=1;b=2;print (a+b)}'

3

awk流程控制的更多相关文章

  1. Shell基础(六):使用awk提取文本、awk处理条件、awk综合脚本应用、awk流程控制、awk扩展应用

    一.使用awk提取文本 目标: 本案例要求使用awk工具完成下列过滤任务: 1> 练习awk工具的基本用法    2> 提取本机的IP地址.根分区使用率    3> 格式化输出/et ...

  2. awk(流程控制、内置变量、内置函数、数组)

    摘自:http://bbs.51cto.com/thread-883948-1-1.html awk(流程控制.内置变量.内置函数.数组) ... 参考其他的资料,给大家看看.一.awk流程控制语句 ...

  3. Unix awk的流程控制BEGIN和END的讲解

    你可能对Unix比较熟悉,但你可能对Unix awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度. 流程控制语句是任何程序设计语言都不能缺少的部分.任何好的语言都有 ...

  4. 12、Linux基础--挂载磁盘步骤、流处理工具awk(正则 比较 逻辑 算数表达式 流程控制)

    笔记 1.晨考 1.用两种方法,实现将文件中的以# 开头的行把# 去掉 sed -r 's/^#//g' /etc/fstab cat /etc/fstab | tr -d '^#' 2.将文件中的H ...

  5. 第10章 Shell编程(4)_流程控制

    5. 流程控制 5.1 if语句 (1)格式: 格式1 格式2 多分支if if [ 条件判断式 ];then #程序 else #程序 fi if [ 条件判断式 ] then #程序 else # ...

  6. Shell命令和流程控制

    Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...

  7. [Shell]条件判断与流程控制:if, case, for, while, until

    ---------------------------------------------------------------------------------------------------- ...

  8. linux shell awk 流程控制语句(if,for,while,do)详细介绍

    在linux awk的 while.do-while和for语句中允许使用break,continue语句来控制流程走向,也允许使用exit这样的语句来退出.break中断当前正在执行的循环并跳到循环 ...

  9. shell编程--流程控制for,do-while,if-then,break,continue,case等

    2.5 流程控制 2.5.1 if语法 1.语法格式 if condition then     statements [elif condition     then statements. ..] ...

随机推荐

  1. MyBatis(4):使用limit实现分页

    用limit实现分页,首先要创建一个Maven项目,搭建好mybatis的实验环境,并且连接好数据库 代码 1,编写dao接口 UserMapper //查询全部用户实现分页 List<User ...

  2. Netty 编解码奥秘

    Netty中编解码 Netty 的解码器有很多种,比如基于长度的,基于分割符的,私有协议的.但是,总体的思路都是一致的. 拆包思路:当数据满足了 解码条件时,将其拆开.放到数组.然后发送到业务 han ...

  3. thinkphp引入PHPExcel类---thinkPHP类库扩展-----引入没有采用命名空间的类库

    最近项目中遇到引入PHPExcel第三方类库 但是下载的phpExcel类没有命名空间,而且所有接口文件的命名都是以.php结尾  而不是tp中的.class.php 解决办法很简单:在引入没有采用命 ...

  4. CF688B Lovely Palindromes 题解

    Content 输入一个数 \(n\),输出第 \(n\) 个偶数位回文数. 数据范围:\(1\leqslant n\leqslant 10^{10^5}\). Solution 一看这吓人的数据范围 ...

  5. CF1166A Silent Classroom 题解

    Content 现在有 \(n\) 名学生,我们需要将这些学生分到两个班上.对于两名在同一班级的学生,如果他们的名字首字母相同,他们就会聊天. 现在给定这些学生的名字,问最少有多少对学生会在一起聊天. ...

  6. React-Router(一)

    React-Router基础知识 import React from "react"; import { BrowserRouter as Router, Switch, Rout ...

  7. JAVA使用百度链接实时推送API提交链接

    官网地址:http://data.zz.baidu.com/ 百度推广API的token获取 http://data.zz.baidu.com/site/index 填写完之后会进行验证, 验证完之后 ...

  8. c++11之日期和时间库

    本文主要介绍 std::chrono日期和时间用法. 演示环境: vs2017 0.头文件 1 #include <chrono> 2 #include <thread>// ...

  9. 【LeetCode】548. Split Array with Equal Sum 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力 日期 题目地址:https://leetcode ...

  10. 【九度OJ】题目1178:复数集合 解题报告

    [九度OJ]题目1178:复数集合 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1178 题目描述: 一个复数(x+iy)集合,两种 ...