FILENAME 当前文件名
测试
FS 字段分割符(默认为一个空格)
字符串
NF 当前记中的字段个数。
get
OFMT 数字的输出格式(默认为%6):负责print语句的格式转换和将数字转换为字符串。
awk
OFS 输出字段分隔符(默认为一个空格)
变量
ORS 输出记录分隔符(默认为一个换行符)
sed
RS 记录分割符(默认为一个换行符)
循环
gawk的增长的变量im
ARGING 当前输入文件的的ARGV的引索。
数据
ERRNO 当前getline或close()失败时的描述信息。
文件
FIELDWIDTHS 用空格分隔的数据列表,用于描述输入字段的宽度。
IGNORECASE 若是不为0,模式匹配和字符串比较是不分大小写的
RT 和RS匹配的输入文本的值(默认什么也没有)
能够使用RS和ORS实现s/old/new/g 的替换形式。但存在在打印的最后有ORS的值。
$awk -f simplesed.awk RS="old|OLD" ORS="brand new" simplesed.data
便可实现把simplesed.data 的“old|Old”替换为“brand new”
$cat simplesed.awk
{
if (RT == " ")
print $0
else
print $0
}
$cat simplesed.data
The OLD house" old old OLD is a great show.
I like shopping for old things at garage sales.
liuuliuliuliu great company! old
I like
其结果会在末尾多出一个brand new ,通过测试发现,RT在本测试中打印出来是当前的RS每次所匹配的值,如果不在awk的主循环体中,则RT打印无结果。
但我发如今最后的一次匹配上,如果有{print RT,RT,RT,$0},则不会出现重复的RT值,而且在结果中显示的是先ORS后RT
其缘由是RT打印的是下一次的值,而且只有第一次是在最前面,其余时候在RS值的后面;{print $0,RT,RT,RT}则会在输出时把RT的放在RS匹配值的前面。