awk if语句

awk命令以if结构开头的话句属于操作句。条件模式(conditional pattern) 中。if是隐含的。而条件操作语句的if则是直接声明的,后面跟了一个用圆括号括起来的表达式。如果该表达式的运算结果为真(非0或非空),则执行表达式后的语句(或语句块)。如果跟在条件表达式后面的语句不止一条,就要用分号或换行符把它们隔开,还要用花括号把这一组语句都括起来,以作为一个块来被执行。

格式

if (表达式 )  {
  语句;语句;...
}

范例

$ awk  '{if($6 > 50) print $1 "Too high"}' filename

说明:在if操作块中对表达式进行测试。如果第6个字段的值大于50,就执行打印语句。由于跟在表达式后面的是单条语句,所以不需要加花括号(filename代表输入文件)。

范例

$ awk  '{if($6 > 20 && $6 <=50) {safe++;print "OK"}}' filename

说明:在if操作块中测试表达式。如果第6个字段的值大于20并且小于50,就要将表达式后面的那些语句作为一个块来执行,因此,必须用花括号把它们括起来。


if/else 语句
if/else语句实现双路判断。如果关键字if后面的表达式为真,就执行与该表达式关联的语句块。如果这个表达式的运算结果为假或0,则执行关键字else后面的语句块。如果if或else包含多条语旬,就必须用花括号把它们合成一个语句块。

格式

if (表达式 )  {
  语句;语句;...
}  else  {
  语句;语句;...
}

范例

$ awk  '{if($6 > 50) {print $1 " Too high";} else {print "Range is OK";}}' filename

说明:如果第一个表达式为真,即第6个字段($6)的值大于50 ,则print函数打印第1个字段和字符串"Too high"。否则就执行else后的语句,打印字符串"Range is OK"。

范例

$ awk  '{if($6 > 50) {count++;print $3;} else {x+5;print $2;}}' filename

说明:如果第一个表达式为真,即第6个字段($6)的值大于50,则执行表达式后面的这个语句块。否则就执行else后面的那个语句块。注意,语句块必须括在花括号中。


if/else和else if语句
if/else和else if语句提供了多路判断功能。如果跟在关键字if后的表达式为真,则执行与该表达式关联的语句块,同时,程序的控制流将跳到与最后一个else关联的最后一个右花括号后,从这个位置继续往下行。否则,控制转到else if测试与其关联的表达式。如果第一个else if的条件为真,则执行对应表达式后的语句。如果else if 的条件表达式都不为真,控制就转到else语句。这个else被称作默认操作,因为只要其他语句都不为真,就执行该else块。

格式

if (表达式 )  {
  语句;语句;...
}  else  if (表达式 )  {
  语句;语句;...
}  else  if (表达式 )  {
  语句;语句;...
}  else  {
  语句;语句;...
}

范例

$ awk  {
   if ( $3  >  89  &&  $3  < 101 ) Agrade ++
   else  if ( $3  >  79 ) Bgrade ++
   else  if ( $3  >  69 ) Cgrade ++
   else  if ( $3  >  59 ) Dgrade ++
   else Fgrade ++
}END {
  print  "The number of failures is "Fgrade
} filename

说明
1. if语句是一个操作,因此必须用花括号括起来。表达式的计算是从左向右进行。如果第一个表达式为假,则整个表达式为假。如果第一个表达式为真,则计算符号逻辑与(&&)后面的那个表达式。如果整个表达式为真,则变量Agrade加1。
2. 如果关键字if后面的表达式值为假,就测试这个else if的表达式。如果该表达式的值为真,就执行它后面的语句。也就是说,如果第3个字段($3)的值大于79,则变量Bgrade加1。
3. 如果头两个条件语句都为假,就测试这个else if 表达式,如果第3个字段($3)的值大于69,则将变量Cgrade加1。
4. 如果头三个条件语句都为假,就测试这个else if表达式,如果第3个字段($3)的值大于59,则将变量Dgrade 加1。
5. 如果上面的表达式都不为真,就执行else块,将变量Fgrade加1。接下来的花括号将结束整个操作块。

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
命令格式 9 一.shell与Unix平台 9 二.shell基本知识 9 三.grep 命令 11 四.sed 11 五.awk命令 11 六.find命令 12 七.test命令 12 八.expr命令 13 九.流程控制语法 13 1 if then elif else fi语句 13 4 for语句 15 6 while语句 16 7 until 语句 17 8 break及continue 18 9 case 语句 18 十.shell脚本调试 19 实例讲解 21 一.模式匹配 21 1.ls显示所有以hosts 开头的文件 21 2.ls显示包含x y z字符的所有文件 21 二.正则表达式 21 1.grep匹配 etc services文件中以ftp字符串开头的哪些文本行 21 2.grep匹配以system文本结尾的行 21 3.grep匹配仅包含一个#字符的行 21 4.grep匹配以<abc>或者[abc]开头的行 21 5.grep匹配以Ftp或者ftp开头的行 21 6.grep匹配F或者f以外的字符 21 7.grep匹配除大写字符以外的字符 21 8.grep匹配以ftp或telnet开头的文本行 21 9.grep匹配以ftp开头 后跟0个或多个 agent的文本行 21 10.grep匹配以ftp开头 后跟1个或多个 agent的文本行 21 11.grep匹配带有数字6 后跟至少3个0的文本行 使用 E启用边界特性 22 12.grep匹配含有 abc 的文本 22 13.常用正则表达式举例 22 14.grep精确匹配:在抽取字符串后加 > 23 15.grep消除大小写:加入 i选项 23 16.特殊字符:$ ‘ “ [ ] ^ | + 23 17.grep判断变量含有[HOST]字符串 23 18.grep判断变量含有[xxx]字符串 23 19.grep匹配后缀为c h j s cpp hpp的文件 23 20.使用grep在文件中查找变量 23 21.正则表达式语法 23 三.sed命令 27 1.sed文本的定位方法: 27 2.sed编辑命令 27 3.sed打印文件的第二行 27 4.sed打印文件的第一到三行 27 5.sed打印匹配test的行 28 6.sed打印匹配$的行 28 7.sed打印最后一行:$是代表最后一行的特殊字符 28 8.sed脚本文件 28 9.sed上例中如果将a 改为i: 28 10.sed上例中如果将a 改为c: 28 11.sed删除第一行 28 12.sed删除第一到第三行 28 13.sed删除最后一行 28 14.sed替换文本 28 15.sed输出到文件 w选项: 28 16.sed从文件读取 r选项: 28 17.sed优势: 28 18.sed常见的一行命令集 29 19.sed去掉字串变量前后的空格 29 20.sed去除文件count中的前后的空格 29 21.sed提取最后一个目录名和程序名 30 22.dirname或参数扩展提取目录名 30 23.grep sed获取文件的扩展名 31 24.sed获取第n个匹配的行的行号 31 四.awk命令 31 1.awk字段分隔符: 31 2.awk匹配模式 32 3.awk“模式匹配-动作” 32 4.awk内部变量 32 5.awk用户定义变量 32 6.awk算术运算 33 7.awk高级算符 33 8.awk内部算术函数 33 9.awk内置函数 33 10.awk的自定义函数 34 11.awk的“下一”语句: 35 12.awk中的字符串相加: 35 13.awk的逻辑运算符 35 14.awk的逻辑与|| 逻辑或&& 35 15.awk的FS OFS和ORS使用: 35 16.awk的sprintf函数的使用 36 17.awk的重定向 输出到文件: 36 18.awk删除文件的第一行 36 19.awk删除输入行中特定行的换行字符 36 20.awk获取输入行中 域的最大个数 36 21.awk输出一行超过80 个字符的每一行 36 22.awk输出至少一个域的所有行 可用来将一个文档里的所有空白行删除 36 23.awk输出范围在0 到100 之间的7 个随机数 36 24.awk将所有用户的login名称依照字母的顺序输出 36 25.awk将一个文档的总行数输出 36 26.awk输出文档的内容时会在每行的最前面输出行号它的功能与"cat n" 类似 36 27.awk自定义函数的例子一: 第一个域与第二个域的平方和 37 28.awk的split 数组 注释 37 29.awk打印传入字符串的第n个分隔域 37 30.在awk中使用shell中的变量 37 31.在某个目录下查找包含特定字符串的文件 返回文件名称 39 五.其它命令 39 1.eval命令:可用于动态生成和执行代码 39 2.exit n:退出 40 3.export导出环境变量: 41 4.shift命令: 41 5.shell的参数扩展: 41 6.<<即时文档 42 7.sh调试选项 42 8.time命令测试一个程序执行时间 42 9.expr命令 42 10.if语句判断变量是否为某个值(防止空串) 43 11.nm命令察看一下xxx o文件中是否有多个相同名字的函数 43 12.ps grep和awk显示属于某个用户的所有进程(并杀死) 43 13.touch命令 43 14.touch与make联合使用强制编译 44 15.dd命令传送文件 44 16.talk命令 44 17.ps命令 44 18.rm指令 44 19.find命令 44 21.rusers命令 45 22.cal命令 45 23.tty命令 45 24.banner命令 45 25.find命令 45 26.cut命令 45 27.paste命令 46 28.rm命令 47 29.mkdir命令 47 30.cat命令 48 32.groupadd和mkgroup命令 48 33.ln命令 48 34.su命令 49 35.setenv命令 49 36.repeat命令 49 37.getopts命令 49 38.sort命令 50 38.kill命令和trap命令 50 39.操作系统和数据库检查(IBM)(一):检查核心参数的配置 51 40.操作系统和数据库检查(IBM)(二):检查时区的配置 52 41.操作系统和数据库检查(IBM)(三):检查硬件错误 52 42.操作系统和数据库检查(IBM)(四):检查硬盘错误 52 43.操作系统和数据库检查(IBM)(五):检查交换区的使用情况 52 44.操作系统和数据库检查(IBM)(六):检查内存的使用情况 52 45.操作系统和数据库检查(IBM)(七):检查系统的运行情况 52 46.操作系统和数据库检查(IBM)(八):检查文件系统的使用情况 52 47.操作系统和数据库检查(IBM)(九):检查文件系统的属性 53 48.操作系统和数据库检查(IBM)(十):HACMP检查 53 49.操作系统和数据库检查(IBM)(十一):检查数据库的DR状态 53 50.操作系统和数据库检查(IBM)(十二):检查数据库的运行状态 54 51.操作系统和数据库检查(IBM)(十三):数据库检查 55 52.操作系统和数据库检查(IBM)(十四):检查数据库的运行日志 55 53.fsck命令 55 54.useradd和mkuser命令 56 54.exec命令 56 54.tr命令 56 六.杂项 57 1.setenv PATH和set path 57 2.awk中输出单引号 57 3.awk或read找出文件行字符数大于80的行 57 4.shell脚本程序中的用户切换: 57 5.shell中删除文件且不显示输出信息和出错信息 58 6.shell变量赋初值时存在特殊字符 58 7.sed的参数串中存在 特殊字符 58 8.find在一个目录下找包含一个字符串的所有文件 58 9.shell中确定一个文件的存在 文件ins billdb 58 10.read的参数与实际域的个数不同 58 11.grep获取主机名和IP地址 59 12.grep确定变量不是数字 60 13.确定字符串是否是ip地址 60 15.grep和awk列出某个目录下的一级子目录 61 16.用printf将一个数打印成逗号分隔的形式 61 17.iTELLIN示例一:在ksh中使用数组 62 18.iTELLIN示例二:从文件中读取参数: 63 19.iTELLIN示例三:包含其它脚本文件 64 20.iTELLIN示例四:初始化一个临时文件供使用 65 21.iTELLIN示例五:分解字符串 65 22.iTELLIN示例六:替换配置文件中的值 66 24.iTELLIN示例八:用另外的文件作为函数库 67 25.iTELLIN示例九:解压缩文件到一个目录 68 26.iTELLIN示例十:判断操作是否成功 70 27.iTELLIN示例十一:封装创建一个组的函数 71 28.iTELLIN示例十二:封装创建一个用户的函数 72 29.iTELLIN示例十三:判断一个字符串是否是正整数 74 30.iTELLIN示例十四:判断当前用户是否有root权限 75 31.iTELLIN示例十五:判断一个字符串是否是整数 75 32.iTELLIN示例十六:删除某个文件夹下若干天以来未改动的文件 76 33.各种Unix环境对ksh的影响: 76 34.set 使用注意点: 77 35.判断对端节点的文件是否存在: 77 36.awk的split函数的使用: 77 37.统计字符串在文件中出现的次数: 77 38.如何进行精确匹配: 81">命令格式 9 一.shell与Unix平台 9 二.shell基本知识 9 三.grep 命令 11 四.sed 11 五.awk命令 11 六.find命令 12 七.test命令 12 八.expr命令 13 九.流程控制语法 13 1 if then elif else fi语句 13 4 for语句 15 6 while语句 16 7 until 语句 17 8 br [更多]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值