1. AWK 工作流程可分为三个部分:
- 读输入文件之前执行的代码段(由BEGIN关键字标识)。
- 主循环执行输入文件的代码段。
- 读输入文件之后的代码段(由END关键字标识)。
AWK 从输入流(文件、管道或标准输入)中读入一行然后将其放在内存中。以行为单位,每读取一行使用 pattern{ commands } 循环处理。
2. 语法格式
awk [options] 'BEGIN{ commands } pattern{ commands } END{ commands }'
options 选项:
- -f progfile 从脚本文件中读取 awk 命令
- -F fs 指定输入分隔符
- -v var=val 在执行前自定义变量
分隔符分隔的字段称为域,用 $0,$1,...,$n 表示,其中 $0 表示所有域,$1 表示第一个域,以此类推。
3. 内置变量
变量 | 说明 |
FS | 输入字段分隔符,默认为任意空格,相当于-F 。 |
RS | 输入记录分隔符,默认为一个换行符。 |
NF | 字段数,在执行过程中对应于当前的字段数。 |
NR | 记录数,在执行过程中对应于当前的行号。 |
OFS | 输出字段分隔符,默认为一个空格。 |
ORS | 输出记录分隔符,默认为一个换行符。 |
ARGC | 命令行参数的个数 |
ARGV | 包含命令行参数的数组 |
FNR | 当前文件记录数,同NR |