码迷,mamicode.com
首页 > 其他好文 > 详细

awk学习之理解内置变量

时间:2019-10-24 13:34:36      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:输出   home   而且   情况下   env   学习   内置变量   nbsp   必须   

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是告知正被处理的文档名。
 

awk学习之理解内置变量

标签:输出   home   而且   情况下   env   学习   内置变量   nbsp   必须   

原文地址:https://www.cnblogs.com/xyz999/p/11731518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!