awk学习之理解内置变量

Posted xyz999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk学习之理解内置变量相关的知识,希望对你有一定的参考价值。

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在处理数据时,通常是读取一行,处理后再读取下一行。默认 换行符作为每次处理的行分隔符。现在定义RS作为新的行分隔符,蒋原来的一行拆成新的几行,也可以配合FS将多行记录合成一行。例FS=" ",这样原来的换行符改成了OFS定义的列分隔符,将RS记录间的内容归结为一行了。
ORS:输出当前记录分隔符。输出行之间插入ORS作为行与行之间的隔开标志,而且单独作为一行显示,系统默认是换行符“ ”。例ORS=" ............ ",表示新起一行打印出............,然后再次换行输出下一条记录。ORS和OFS不同,前者看成一行行的分隔符,后者看成在当前位置处插入大段的文字描述仅插入一次。
 
关于以上内置变量,总结如下:
处理文件时,遇到FS就作为新的一列;遇到RS就开始新的一行;输出文件被print的变量之间用OFS隔开;每行记录间插入ORS且作为单独一行;遇到NR则告知输出量多少行;遇到NF则告知是处理哪几列;FILENAME是告知正被处理的文档名。
 

以上是关于awk学习之理解内置变量的主要内容,如果未能解决你的问题,请参考以下文章

二.AWK内置变量

linux awk 内置变量使用介绍

awk 内置变量

awk从入门到入土认识awk内置变量和变量的使用

Linux 8个有力的AWK内置变量

Linux基础教程 linux awk内置变量使用介绍