gawk内建环境变量:
变量 描述
$n 当前记录的第n个字段,字段间由FS分隔。
$0 完整的输入记录。
ARGC 命令行参数的数目。
ARGIND 命令行中当前文件的位置(从0开始算)。
ARGV 包含命令行参数的数组。
CONVFMT 数字转换格式(默认值为%.6g)
ENVIRON 环境变量关联数组。
ERRNO 最后一个系统错误的描述。
FIELDWIDTHS 字段宽度列表(用空格键分隔)。
FILENAME 当前文件名。
FNR 同NR,但相对于当前文件。
FS 字段分隔符(默认是任何空格)。
IGNORECASE 如果为真,则进行忽略大小写的匹配。
NF 当前记录中的字段数。
NR 当前记录数。
OFMT 数字的输出格式(默认值是%.6g)。
OFS 输出字段分隔符(默认值是一个空格)。
ORS 输出记录分隔符(默认值是一个换行符)。
RLENGTH 由match函数所匹配的字符串的长度。
RS 记录分隔符(默认是一个换行符)。
RSTART 由match函数所匹配的字符串的第一个位置。
SUBSEP 数组下标分隔符(默认值是\034)。
<wbr></wbr>
gawk运算符
Table 2. 运算符
运算符 描述
= += -= *= /= %= ^= **= 赋值
?: C条件表达式
|| 逻辑或
&& 逻辑与
~ ~! 匹配正则表达式和不匹配正则表达式
< <= > >= != == 关系运算符
空格 连接
+ - 加,减
* / & 乘,除与求余
+ - ! 一元加,减和逻辑非
^ *** 求幂
++ -- 增加或减少,作为前缀或后缀
$ 字段引用
in 数组成员
6. 记录和域
6.1. 记录
gawk把每一个以换行符结束的行称为一个记录。
记录分隔符:默认的输入和输出的分隔符都是回车,保存在内建变量ORS和RS中。
$0变量:它指的是整条记录。如 gawk..exe <wbr>“{print $0}” <wbr>test.txt将输出test文件中的所有记录。<br><br> 变量NR:一个计数器,每处理完一条记录,NR的值就增加1。如 gawk.exe <wbr>“{print NR,$0}” test.txt将输出test文件中所有记录,并在记录前显示记录号。<br> 6.2. 域<br><br> 记录中每个单词称做“域”,默认情况下以空格或tab分隔。gawk可跟踪域的个数,并在内建变量NF中保存该值。如 gawk “{print $1,$3}” <wbr>test.txt将打印test文件中第一和第三个以空格分开的列(域)。<br> 6.3. 域分隔符<br><br> 内建变量FS保存输入域分隔符的值,默认是空格或tab。我们可以通过-F命令行选项修改FS的值。如 gawk.exe –F”:” <wbr>“{print $1,$5}” <wbr>test.txt将打印以冒号为分隔符的第一,第五列的内容。<br><br> 可以同时使用多个域分隔符,这时应该把分隔符写成放到方括号中,如gawk.exe –F”[:\t]” “{print $1,$3}'” test.exe,表示以空格、冒号和tab作为分隔符。<br><br> 输出域的分隔符默认是一个空格,保存在OFS中。如gawk.exe –F”:” <wbr>“{print $1,$5}” <wbr>test.exe,$1和$5间的逗号就是OFS的值。<br> 7. gawk专用正则表达式元字符<br><br> 一般通用的元字符集就不讲了,可参考我的Sed和Grep学习笔记。以下几个是gawk专用的,不适合unix版本的gawk。<br><br> \Y<br><br> 匹配一个单词开头或者末尾的空字符串。<br> \B<br><br> 匹配单词内的空字符串。<br> \<<br><br> 匹配一个单词的开头的空字符串,锚定开始。<br> \><br><br> 匹配一个单词的末尾的空字符串,锚定末尾。<br> \w<br><br> 匹配一个字母数字组成的单词。<br> \W<br><br> 匹配一个非字母数字组成的单词。<br> \‘<br><br> 匹配字符串开头的一个空字符串。<br> \'<br><br> 匹配字符串末尾的一个空字符串。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>