!!! awk内置变量和字段变量
? awk ?    2017-04-11 20:59:59    143    0    0
simon88   ? awk ?

 

  • awk 的字段变量

  awk 所内建的字段变量及其涵意如下 :

字段变量

含义

$0

一字符串,其内容为目前 awk 所读入的整行数据。

$1

$0 上第一个字段的数据。

$2

$0 上第二个字段的数据。

...

其余类推

 

  • 读入数据行时,awk如何更新(update)这些内置的字段变量?

  1. 当 awk 从数据文件中读取一行数据时,awk 会使用内置变量$0 予以记录。

  2. 每当 $0 被改动时 (例如:读入新的数据行 或 自行变更 $0) awk 会立刻重新分析 $0 的字段情况,并将 $0 上各字段的数据用 $1、$2、...等予以记录。 

  • awk的内置变量(Built-in Variables)

  awk 提供了许多内置变量,使用者在程序中可使用这些变量来取得相关信息(不用加$)。常见的内置变量有:

内置变量

含义

NF (Number of Fields)

为一整数,其值表示$0上所存在的字段总数。

NR (Number of Records)

为一整数,其值表示awk已读入的数据行数目。

FILENAME

awk正在处理的数据文件名。

 

例如 : awk 从数据文件 emp.dat 中读入第一行记录"A125 Jenny 100 210" 之后,程序中:

    $0 的值将是 "A125 Jenny 100 210"

    $1 的值为 "A125"    $2 的值为 "Jenny"

    $3 的值为 100      $4 的值为 210

    NF 的值为 4           $NF 的值为 210 (笔者注:$NF即为$4)

    NR 的值为 1                 FILENAME 的值为 "emp.dat" 

  • awk的工作流程 :

  执行awk时,它会反复进行下列四步骤。 

  1. 自动从指定的数据文件中读取一个数据行。
  2. 自动更新(Update)相关的内置变量的值。如:NF, NR, $0...
  3. 依次执行程序中 所有 的 Pattern { Actions } 指令。
  4. 当执行完程序中所有 Pattern { Actions } 时,若数据文件中还有未读取的数据,则反复执行步骤1到步骤4。awk会自动重复进行上述4个步骤,使用者不须在程序中编写这个循环 (Loop)。

上一篇: awk入门

下一篇: AWK程序中使用Shell命令

143 人读过
0 条评论