gawk快速指南

gawk是awk的GNU版本,采用编程语言的形式

gawk命令格式

gawk options program file

选项

-F fs 指定用于分隔行中数据段的文件分隔符

-f file 读取程序文件名

-v var=value 定义变量及默认值

-mf N 指定处理数据文件中最大字段数

-mr N 指定数据文件最大记录数

-w keyword 指定兼容模式或警告等级

使用gawk

可以直接在命令行或shell脚本中使用gawk

从命令行上读取程序脚本

单引号和花括号包住

例子:gawk '{print $1}'

在程序脚本中使用多条命令

在每个命令之间放一个分号

从文件中读取

-f file

处理数据前运行脚本

BEGIN. 先执行BEGIN后面指定的程序脚本再读取数据

处理数据后运行脚本

END

gawk变量

1.内建变量

记录是一行数据;数据字段是运行中独立的数据元素默认空白字符分隔

$0 整条记录

$1 第一个数据字段

$n 第n个数据字段

FIELDWIDTHS 定义了每个字段具体宽度

FS 输入字段分隔符

RS 输入记录分隔符

OFS 输出字段分隔符

ORS 输出记录分隔符

更多内建变量

ARGC 当前命令行参数个数

ARGIND 当前文件在ARGV中的索引

ARGV 包含命令行参数的数组

CONVFMT 数字转换格式,默认%.6

ENVIRON 由当前shell环境变量及值组成的关联数组

ERRNO 系统错误号

FILENAME 输入文件名

FNR 当前数据文件记录数

IGNORECASE 设成非零时,忽略大小写

NF 字段总数

NR 已处理的记录数

OFMT 数字输出格式

RLENGTH 由match函数匹配的子串长度

RSTART 由match函数匹配的子串起始位置

gawk程序特性

1.正则表达式

必须出现在它作用的程序代码的左花括号之前

2.匹配操作符

~ 允许将正则表达式限定在特定的字段上

3.数学表达式

4.结构化命令

类似C语言

if (condition) statement1; else statement2

while (conditon) {

statement

}

do {

statement

} while (conditon)

for (variable assignment; condition; iteration process) {}

你可能感兴趣的:(gawk快速指南)