linux awk if 多个条件,linux shell awk 流程控制语句(if,for,while,do)详细介绍

在linux awk的 while、do-while和for语句中允许使用break,continue语句来控制流程走向,也允许使用exit这样的语句来退出。break中断当前正在执行的循环并跳到循环外执行下一条语句。if 是流程选择用法。 awk中,流程控制语句,语法结构,与c语言类型。下面是各个语句用法。

一.条件判断语句(if)if(表达式) #if ( VariableinArray )

语句1

else

语句2

格式中"语句1"可以是多个语句,如果你为了方便Unix awk判断也方便你自已阅读,你最好将多个语句用{}括起来。Unix awk分枝结构允许嵌套,其格式为:if(表达式)

{语句1}

else if(表达式)

{语句2}

else

{语句3}

[chengmo@localhost nginx]# awk 'BEGIN{

test=100;

if(test>90)

{

print "very good";

}

else if(test>60)

{

print "good";

}

else

{

print "no pass";

}

}'

very good

每条命令语句后面可以用“;”号结尾。

二.循环语句(while,for,do)1.while语句

格式:

while(表达式)

{语句}例子:

[chengmo@localhost nginx]# awk 'BEGIN{

test=100;

total=0;

while(i<=test)

{

total+=i;

i++;

}

print total;

}'

50502.for 循环

for循环有两种格式:

格式1:

for(变量 in 数组)

{语句}

例子:

[chengmo@localhost nginx]# awk 'BEGIN{

for(k in ENVIRON)

{

print k"="ENVIRON[k];

}

}'

AWKPATH=.:/usr/share/awk

OLDPWD=/home/web97

SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass

SELINUX_LEVEL_REQUESTED=

SELINUX_ROLE_REQUESTED=

LANG=zh_CN.GB2312

。。。。。。

说明:ENVIRON 是awk常量,是子典型数组。

格式2:

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

{语句}

例子:

[chengmo@localhost nginx]# awk 'BEGIN{

total=0;

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

{

total+=i;

}

print total;

}'

50503.do循环

格式:

do

{语句}while(条件)

例子:

[chengmo@localhost nginx]# awk 'BEGIN{

total=0;

i=0;

do

{

total+=i;

i++;

}while(i<=100)

print total;

}'

5050

以上为awk流程控制语句,从语法上面大家可以看到,与c语言是一样的。有了这些语句,其实很多shell程序都可以交给awk,而且性能是非常快的。

break当 break 语句用于 while 或for 语句时,导致退出程序循环。

continue当 continue 语句用于 while 或for 语句时,使程序循环移动到下一个迭代。

next能能够导致读入下一个输入行,并返回到脚本的顶部。这可以避免对当前输入行执行其他的操作过程。

exit语句使主输入循环退出并将控制转移到END,如果END存在的话。如果没有定义END规则,或在END中应用exit语句,则终止脚本的执行。

三、性能比较

[chengmo@localhost nginx]# time (awk 'BEGIN{ total=0;for(i=0;i<=10000;i++){total+=i;}print total;}')

50005000

real    0m0.003s

user    0m0.003s

sys     0m0.000s

[chengmo@localhost nginx]# time(total=0;for i in $(seq 10000);do total=$(($total+i));done;echo $total;)

50005000

real    0m0.141s

user    0m0.125s

sys     0m0.008s

实现相同功能,可以看到awk实现的性能是shell的50倍!

原文链接:http://www.cnblogs.com/chengmo/archive/2010/10/04/1842073.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vba 自动排序_给VBA字典键值排序,并提取需要的数据

未知的领域很广、风景很美&#xff0c;不要蜷缩在一小块自认为天堂的世界里。待到暮年时安于自欺欺人&#xff0c;要努力提高自己&#xff0c;学习是一件很辛苦的事。要有一颗充满生机的心&#xff0c;把握现在&#xff0c;这才是进取。机会总在等待中出现&#xff0c;越是有意…

linux 带缓存的fwrite,文件IO编程之(六):基于流缓冲 fopen,fwrite,fput

标准IO开发前面分析的文件IO编程都是基于文件描述符的。这些都是基本的IO控制&#xff0c;是不带缓存的。这里要讨论的IO操作是基于流缓冲的&#xff0c;它是符合ANSIC的标准IO处理。标准IO提供流缓冲的目的是尽可能减少使用read和write调用的数量。标准IO提供了3种类型的缓冲存…

vba 提取 json某个值_利用VBA字典,提取两列数据的重复值

大家好&#xff0c;今日我们继续讲解VBA数组与字典解决方案&#xff0c;今日讲解第52讲&#xff1a;利用字典&#xff0c;提取两列数据重复值。有人讲:字典是VBA中最为精华的部分,持这种观点的人肯定有自己的道理,确实,利用字典可以给我的代码带来很大的方便之处,今日我讲解的是…

Linux中存储相关的命令,Linux存储管理命令与HAB相关命令

首先了解Linux中的设备命名规则&#xff1a;在安装和使用Linux的过程中&#xff0c;您必然会接触到不少像hda1、ttyS0、eth0这样的设备名称。在Linux中&#xff0c;每个设备必须在它的驱动程序控制下运行&#xff0c;驱动程序则与/dev目录下的特殊文件联系在一起&#xff0c;尽…

红外倒车雷达原理图_硅光电倍增管 (SiPM) 直接飞行时间 (dToF) 激光雷达平台为工业测距应用提供现成的设计...

点击蓝字关注我们请私信我们添加白名单如果您喜欢本篇文章&#xff0c;欢迎转载&#xff01;推动高能效创新的安森美半导体 (ON Semiconductor&#xff0c;美国纳斯达克上市代号&#xff1a;ON)&#xff0c;推出了由该公司硅光电倍增管 (SiPM) 技术实现的单点直接飞行时间 (dTo…

linux中nslookup命令功能,nslookup

a,最简单的方法[rootrudder ~]# nslookup baidu.comServer: 8.8.8.8Address: 8.8.8.8#53Non-authoritative answer:Name: baidu.comAddress: 123.125.114.144Name: baidu.comAddress: 220.181.111.85Name: baidu.comAddress: 220.181.111.86nslookup&#xff0c;交互方式&#…

用c语言求最大公约数的流程图,如何用c语言求最大公约数和最小公倍数

ag_cd(m,n);if (m>n) //最小公倍数较大的数*(较小的数/最大公约数){bn;b/a;return m*b;}else{bm;b/a;return n*b;}}main(){int p,r,n,m,temp;printf("Please enter 2 numbers n,m:");scanf("%d,%d",&n,&m);//输入两个正整数.if(n在m中.{tempn;n…

visio图标_弱电间机柜原型图整理,可编辑!(Excel,visio,CAD)

有朋友问到机柜原型图&#xff0c;这个我们在弱电vip技术群里面也有朋友提到过&#xff0c;今天我们就整理了弱电系统中常用的机柜原型图&#xff0c;有Excel&#xff0c;visio&#xff0c;CAD版本&#xff0c;可以修改编辑&#xff01;1、Excel机柜原型图(可编辑)机柜布局-1机…

c语言字节强制对齐,C语言的那些小秘密之字节对齐

为了让读者加深印象&#xff0c;我们这里在代码中没有使用0&#xff0c;而是使用的4&#xff0c;所以在最终计算出的结果部分减去了一个4才是偏移地址&#xff0c;当然实际使用中我们都是用的是0。懂了上面的宏offsetof之后我们再来看看下面的代码&#xff1a;#include #define…

xshell 6 连接debian系统拒绝了密码_原来连接Linux,还有这个方法

你是不是以为电脑的操作系统只有Windows和IOS系统&#xff0c;其实不是的&#xff0c;还有一个Linux系统&#xff0c;这个系统不是很常见&#xff0c;导致很多人连怎么连接Linux系统都不太清楚明白。Windows系统可以用远程桌面&#xff0c;Linux系统怎么来远程桌面呢&#xff1…

ctf up怎么写 write_软件测试工程师要不要写工具?

Fintech概念正受到不少互联网金融公司的热捧&#xff0c;主要是指代那些可用于撕裂传统金融服务方式的高新技术。越来越多的企业开辟了新的部门去研究各种各样能让自己产品增值的科技类产品。尤其是在很多互联网金融公司&#xff0c;业务分析师BA(Business Analyst)&#xff0c…

c语言时间错误的是什么意思,C语言中,如何验证输入日期的正确性!~

就这么写的&#xff0c;没调试&#xff0c;你自己调一下#include<stdio.h>voidmain(){intyear,month,date;scanf("%d-%d-%d",&year,&month,&date);printf("%d-%d-%d",year,month,date);if(year<0||year>3000)printf("Error!&…

c语言中数据存储在文件中,急求如何将下列C语言程序数据存储到文件中?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中。#include int n0;int rest[7][7]; //全局声明,以供全局调用int main(){void perm(int list[],int ,int );int …

th标签能包裹select吗_电影《八佰》过后,他能摘掉马思纯前男友标签了吗?

文/温青青提到欧豪&#xff0c;大多数人第一时间想到的还是“马思纯前男友”、“快乐男声选秀出道歌手”这些身份。原因嘛很简单&#xff0c;只因为男方在娱乐圈的名气地位暂时还不如女方。类似情况分手的情侣还有很多&#xff0c;杨紫的前男友秦俊杰&#xff0c;蓝盈莹的前男友…

c语言 浮点数误差,[扫盲]为什么浮点数运算会有误差

在开始阅读本文之前&#xff0c;请猜测一下下面程序的输出结果&#xff1a;float a0.0f;for(int i0;i<10;i){a0.1;}cout<true? Youre too young, too simple, sometimes naive.虽然乍看上去很不可思议&#xff0c;但是0.1叠加10遍的确是和1.0不等的。这种诡异的情况是由…

h3c防火墙u200配置命令_h3c 防火墙清除配置

reset saved-configuration 重置配置文件。The saved configuration file will be erased. Are you sure? [Y/N]:YConfiguration file in cfa0 is being cleared. Please wait ...Configuration file is cleared.reboot 重新防火墙Start to check configuration with next sta…

c语言库快速幂函数,C语言 - 快速幂 - 迭代法+递归法 - 详细讲解

快速幂的作用&#xff1a;解决 求 a ^ n 的问题 (n可以大于1e18)&#xff0c; 如果用for循环的话&#xff0c;毫无疑问直接炸掉 …… 所以也就用了算法复杂度在 o(log n)的快速幂算法来解决此类问题。快速幂递归法(基于二分思想)&#xff1a;那么既然要用到二分法那么怎么二分&…

python virtualenv_python开发之virtualenv与virtualenvwrapper讲解

在使用 Python 开发的过程中&#xff0c;工程一多&#xff0c;难免会碰到不同的工程依赖不同版本的库的问题&#xff1b;亦或者是在开发过程中不想让物理环境里充斥各种各样的库&#xff0c;引发未来的依赖灾难。此时&#xff0c;我们需要对于不同的工程使用不同的虚拟环境来保…

android 自定义 popupwindow,Android自定义弹出窗口PopupWindow使用技巧

PopupWindow是Android上自定义弹出窗口&#xff0c;使用起来很方便。PopupWindow的构造函数为public PopupWindow(View contentView, int width, int height, boolean focusable)contentView为要显示的view&#xff0c;width和height为宽和高&#xff0c;值为像素值&#xff0c…

python花萼长度表_python描述性统计实践

1、加载相关库和数据集使用的库主要有&#xff1a;pandas、numpy、sklearn、matplotlib、seaborn使用的数据集&#xff1a;sklearn库中的鸢尾花数据集import pandas as pdimport numpy as npfrom sklearn.datasets import load_irisimport matplotlib.pyplot as pltimport seab…