WEB开发网
开发学院数据库Oracle 详细分析Oracle中Trace文件的脚本 阅读

详细分析Oracle中Trace文件的脚本

 2007-05-12 12:23:34 来源:WEB开发网   
核心提示: 这两个方法的差别在于如何设置字段分隔符,在这个脚本中,详细分析Oracle中Trace文件的脚本(4),字段分隔符在代码自身中指定(通过设置 FS 变量),而在前一个示例中,awk 才执行代码块,以下示例脚本输出将输出其第一个字段等于 fred 的所有行中的第三个字段,通过在命令行上向 a

这两个方法的差别在于如何设置字段分隔符。在这个脚本中,字段分隔符在代码自身中指定(通过设置 FS 变量),而在前一个示例中,通过在命令行上向 awk 传递 -F":" 选项来设置 FS。通常,最好在脚本自身中设置字段分隔符,只是因为这表示您可以少输入一个命令行自变量。我们将在本文的后面详细讨论 FS 变量。

BEGIN 和 END 块

通常,对于每个输入行,awk 都会执行每个脚本代码块一次。然而,在许多编程情况中,可能需要在 awk 开始处理输入文件中的文本之前执行初始化代码。对于这种情况,awk 允许您定义一个 BEGIN 块。我们在前一个示例中使用了 BEGIN 块。因为 awk 在开始处理输入文件之前会执行 BEGIN 块,因此它是初始化 FS(字段分隔符)变量、打印页眉或初始化其它在程序中以后会引用的全局变量的极佳位置。

awk 还提供了另一个特殊块,叫作 END 块。awk 在处理了输入文件中的所有行之后执行这个块。通常,END 块用于执行最终计算或打印应该出现在输出流结尾的摘要信息。

规则表达式和块

awk 允许使用规则表达式,根据规则表达式是否匹配当前行来选择执行独立代码块。以下示例脚本只输出包含字符序列 foo 的那些行:

  /foo/ { print }

当然,可以使用更复杂的规则表达式。以下脚本将只打印包含浮点数的行:

  /[0-9]+.[0-9]*/ { print }

表达式和块

还有许多其它方法可以选择执行代码块。我们可以将任意一种布尔表达式放在一个代码块之前,以控制何时执行某特定块。仅当对前面的布尔表达式求值为真时,awk 才执行代码块。以下示例脚本输出将输出其第一个字段等于 fred 的所有行中的第三个字段。如果当前行的第一个字段不等于 fred,awk 将继续处理文件而不对当前行执行 print 语句:

上一页  1 2 3 4 5  下一页

Tags:详细 分析 Oracle

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接