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) {}