ENVIRON:
使用这个内置变量可以查看当前系统下的环境变量,例如BEGIN {print ENVIRON["HOME"]}。
FILENAME:
当前正被处理的文件名 例END {print FILENAME}。
NF:
被处理的文件每行(每一行称为一个记录),分成了几个域(列),$0表示整个记录,每个域被标记为$1,$2......$n。
NR:
用在block中间段时,标志正被处理的记录序号(行号),用在END区域时,代表输入文件的总记录。
FNR:
当处理多个文件时,NR值会持续增加,逐个文件累计;而每当读入新文件时,FNR值都会被重置为0.
FS:
输入记录分隔符,默认为“ ”,即空格。将被处理文件一行记录中的某字段作为分隔符,赋给变量$1,$2......$n。可以用awk -F “ ” 指定,也能用BEGIN{FS=" "}指定。由于分隔字段符必须在读取第一行记录前就定义,所以须在BEGIN区域完成。也能用正则式定义,格式如FS=“[:;% ]”,:或者;或者%或者空格四者之一的意思。
OFS:
输出记录分隔符,默认情况下,放print字段用空格隔开。如果有指定OFS,则用指定的分隔符$n,被打印在各字段时间取代空格。同理,也必须在处理第一行记录之前就被定义,在BEGIN区域中完成。
RS:
处理记录分隔符。
awk在处理数据时,通常是读取一行,处理后再读取下一行。默认\n换行符作为每次处理的行分隔符。现在定义RS作为新的行分隔符,蒋原来的一行拆成新的几行,也可以配合FS将多行记录合成一行。例FS="\n",这样原来的换行符改成了OFS定义的列分隔符,将RS记录间的内容归结为一行了。
ORS:
输出当前记录分隔符。输出行之间插入ORS作为行与行之间的隔开标志,而且单独作为一行显示,系统默认是换行符“\n”。例ORS="\n............\n",表示新起一行打印出............,然后再次换行输出下一条记录。ORS和OFS不同,前者看成一行行的分隔符,后者看成在当前位置处插入大段的文字描述仅插入一次。
关于以上内置变量,总结如下:
处理文件时,遇到FS就作为新的一列;遇到RS就开始新的一行;输出文件被print的变量之间用OFS隔开;每行记录间插入ORS且作为单独一行;遇到NR则告知输出量多少行;遇到NF则告知是处理哪几列;FILENAME是告知正被处理的文档名。