awk 内置变量和函数
awk内置变量(预定义变量)变量 含义 缺省值
--------------------------------------------------------
ARGC 命令行上除了选项-F,-v,-f以及这些选项所对应的参数之外的所有参数的个数
awk -F, 'END{print ARGC}' test
参数为2个,awk和test ARGIND 当前被处理文件的ARGV标志符
awk -F, 'END{print ARGIND}' test
test在命令行的位置为1 ARGV 命令行参数数组
awk -F, 'END{print ARGV[0],ARGV[1]}' test
打印awk test
CONVFMT 数字转换成字符串格式默认为 %.6g
awk 'BEGIN{CONVFMT="%.6g"}END{a=172.345678;b=a"";print b;}' test
将数字a转换成字符串b时的转换格式
输出:172.346 ENVIRON UNIX环境变量
awk -F, 'END{for(var in ENVIRON){print var,ENVIRON[var]}}' test
打印环境变量的名和值ERRNO UNIX最后一个系统错误消息
FILEDWIDTHS 输入字段宽度的空白分隔字符串
字段宽度列表(用空格键分隔)。替换FS分隔符
awk 'BEGIN{FIELDWIDTHS="1 2"}{print $1,$2}' test
打印出:
T es
FILENAME 当前输入文件的名字
FNR 当前文件记录数,变换文件重新计算
FS 输入字段分隔符 空格 IGNORECASE 控制大小写敏感0(大小写敏感)
awk 'BEGIN{IGNORECASE=1}/test/' test
打印出:
1 Test
2 test NF 当前记录中的字段个数
NR 已经读出的记录数 OFMT 数字的输出格式 %.6g
awk 'BEGIN{OFMT="%.4g"}END{print 172.345678;}' test
打印出:172.3 OFS 输出字段分隔符 空格
ORS 输出的记录分隔符 新行
RS 输入的记录分隔符 新行RSTART 被匹配函数匹配的字符串的第一个位置
RLENGTH 被匹配函数匹配的字符串长度
由match函数所匹配的字符串的第一个位置。
awk 'END{match("hello test!",/st!$/);print RSTART,RLENGTH}' test
打印出:9 3 (从1开始数) SUBSEP 下标分隔符 "\034"
awk 'BEGIN{array[0,0]="test1";array[0,1]="test2";}END{for(var in array){print var,SUBSEP,array[var]}}' test
输出:其中SUBSEP替换了0,0中的逗号,(经测试不加SUBSEP,结果一样)?
00 test1
01 test2
awk的内置函数
函数 用途或返回值
------------------------------------------------
gsub(reg,string,target) 每次常规表达式reg匹配时替换target中的string
#awk 'BEGIN{x="xyzabcxyzabcxyz";gsub(/abc/,"ABC",x);print x}'
xyzABCxyzABCxyz gensub(正则,替换,范围,目标串)
#awk 'BEGIN{print gensub("zorro","AAAA","2",seker zorro zorro seker)}'
seker zorro AAAA seker index(search,string) 返回string中search串的位置
awk 'BEGIN{info="this is a test2010test!";print index(info,"test")}'
11 length(string) 求串string中的字符个数
awk 'BEGIN{print length("test1234")}'
8 match(string,reg) 返回常规表达式reg匹配的string中的位置
awk 'BEGIN{info="this is a test2010test!";print match(info,/[0-9]+/)}'
15 printf(format,variable) 格式化输出,按format提供的格式输出变量variable。
split(string,store,delim) 根据分界符delim,分解string为store的数组元素
awk 'BEGIN{info="this is a test";split(info,tA," ");for(k in tA){print k,tA[k];}}'
4 test
1 this
2 is
3 a
sprintf(format,variable) 返回一个包含基于format的格式化数据,variables是要放到串中的数据
strftime(format,timestamp) 返回一个基于format的日期或者时间串,timestmp是systime()函数返回的时间
sub(reg,string,target) 第一次当常规表达式reg匹配,替换target串中的字符串
substr(string,position,len) 返回一个以position开始len个字符的子串
awk 'BEGIN{info="this is a test2010test!";print substr(info,4,10);}'
s is a tes
tolower(string) 返回string中对应的小写字符
toupper(string) 返回string中对应的大写字符
atan(x,y) x的余切(弧度)
cos(x) x的余弦(弧度)
exp(x) e的x幂
int(x) x的整数部分
log(x) x的自然对数值
rand() 0-1之间的随机数
sin(x) x的正弦(弧度)
sqrt(x) x的平方根
srand(x) 初始化随机数发生器。如果忽略x,则使用系统时间
#awk 'BEGIN{srand();fr=int(100*rand());print fr;}'
78
system() 执行系统命令
相关文章
- python基础之内置函数和匿名函数
- 黑马程序员_Java基础_面向对象(概述、类与对象关系、成员变量、封装private、构造函数和构造代码块、this关键字)
- 黑马程序员——JAVA基础_01(类和对象的关系、成员变量和局部变量、构造函数、构造代码块)
- 黑马程序员_Java基础_面向对象(概述、类与对象关系、成员变量、封装private、构造函数和构造代码块、this关键字)
- Python 学习 第七篇:函数1(定义、调用和变量的作用域)
- [转贴]在 JMeter 压力测试工具中使用变量 和 函数
- 为什么JavaScript允许您将数组和函数存储在一个变量中?
- php基础知识【函数】(8)xml和变量函数
- Shell脚本中变量和函数变量的作用域
- Python内置函数__import__和eval用法