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