全部博文(245)
分类:
2008-05-17 10:51:33
条件语句
awk 还提供了非常好的类似于 C 语言的 if
语句。如果您愿意,可以使用 if
语句重写前一个脚本:
|
这两个脚本的功能完全一样。第一个示例中,布尔表达式放在代码块外面。而在第二个示例中,将对每一个输入行执行代码块,而且我们使用 if
语句来选择执行 print 命令。这两个方法都可以使用,可以选择最适合脚本其它部分的一种方法。
以下是更复杂的 awk if
语句示例。可以看到,尽管使用了复杂、嵌套的条件语句, if
语句看上去仍与相应的 C 语言 if
语句一样:
|
使用 if
语句还可以将代码:
|
转换成:
|
这两个脚本都只输出 不 包含 matchme
字符序列的那些行。此外,还可以选择最适合您的代码的方法。它们的功能完全相同。
awk 还允许使用布尔运算符 "||"(逻辑与)和 "&&"(逻辑或),以便创建更复杂的布尔表达式:
|
这个示例只打印第一个字段等于 foo
且 第二个字段等于 bar
的那些行。
数值变量!
至今,我们不是打印字符串、整行就是特定字段。然而,awk 还允许我们执行整数和浮点运算。通过使用数学表达式,可以很方便地编写计算文件中空白行数量的脚本。以下就是这样一个脚本:
|
在 BEGIN 块中,将整数变量 x
初始化成零。然后,awk 每次遇到空白行时,awk 将执行 x=x+1
语句,递增 x
。处理完所有行之后,执行 END 块,awk 将打印出最终摘要,指出它找到的空白行数量。