文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>awk基础入门(3)

awk基础入门(3)

时间:2008-05-17  来源:poplar.xu

条件语句

awk 还提供了非常好的类似于 C 语言的 if 语句。如果您愿意,可以使用 if 语句重写前一个脚本:


{
if ( $5 ~ /root/ ) {
print $3
}
}

    这两个脚本的功能完全一样。第一个示例中,布尔表达式放在代码块外面。而在第二个示例中,将对每一个输入行执行代码块,而且我们使用 if 语句来选择执行 print 命令。这两个方法都可以使用,可以选择最适合脚本其它部分的一种方法。

    以下是更复杂的 awk if 语句示例。可以看到,尽管使用了复杂、嵌套的条件语句, if 语句看上去仍与相应的 C 语言 if 语句一样:


{
if ( $1 == "foo" ) {
if ( $2 == "foo" ) {
print "uno"
} else {
print "one"
}
} else if ($1 == "bar" ) {
print "two"
} else {
print "three"
}
}

使用 if 语句还可以将代码:


! /matchme/ { print $1 $3 $4 }

转换成:


{
if ( $0 !~ /matchme/ ) {
print $1 $3 $4
}
}

    这两个脚本都只输出 不 包含 matchme 字符序列的那些行。此外,还可以选择最适合您的代码的方法。它们的功能完全相同。

awk 还允许使用布尔运算符 "||"(逻辑与)和 "&&"(逻辑或),以便创建更复杂的布尔表达式:


( $1 == "foo" ) && ( $2 == "bar" ) { print }

这个示例只打印第一个字段等于 foo 且 第二个字段等于 bar 的那些行。

数值变量!

    至今,我们不是打印字符串、整行就是特定字段。然而,awk 还允许我们执行整数和浮点运算。通过使用数学表达式,可以很方便地编写计算文件中空白行数量的脚本。以下就是这样一个脚本:


BEGIN { x=0 }
/^$/ { x=x+1 }
END { print "I found " x " blank lines. :)" }

    在 BEGIN 块中,将整数变量 x 初始化成零。然后,awk 每次遇到空白行时,awk 将执行 x=x+1 语句,递增 x 。处理完所有行之后,执行 END 块,awk 将打印出最终摘要,指出它找到的空白行数量。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载