资源描述:
《gawk 内置函数详细介绍(实例)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、linuxawk内置函数详细介绍(实例)这节详细介绍awk内置函数,主要分以下3种类似:算数函数、字符串函数、其它一般函数、时间函数 一、算术函数:以下算术函数执行与C语言中名称相同的子例程相同的操作:函数名说明atan2(y,x)返回y/x的反正切。cos(x)返回x的余弦;x是弧度。sin(x)返回x的正弦;x是弧度。exp(x)返回x幂函数。log(x)返回x的自然对数。sqrt(x)返回x平方根。int(x)返回x的截断至整数的值。rand()返回任意数字n,其中0<=n<1。srand(
2、[Expr])将rand函数的种子值设置为Expr参数的值,或如果省略Expr参数则使用某天的时间。返回先前的种子值。 举例说明:[chengmo@centos5~]$awk'BEGIN{OFMT="%.3f";fs=sin(1);fe=exp(10);fl=log(10);fi=int(3.1415);printfs,fe,fl,fi;}'0.84122026.4662.3033 OFMT设置输出数据格式是保留3位小数获得随机数:[chengmo@centos5~]$awk'BEGIN{sran
3、d();fr=int(100*rand());printfr;}'78[chengmo@centos5~]$awk'BEGIN{srand();fr=int(100*rand());printfr;}'31[chengmo@centos5~]$awk'BEGIN{srand();fr=int(100*rand());printfr;}'41 二、字符串函数是:函数说明gsub(Ere,Repl,[In])除了正则表达式所有具体值被替代这点,它和sub函数完全一样地执行,。sub(Ere,Repl
4、,[In])用Repl参数指定的字符串替换In参数指定的字符串中的由Ere参数指定的扩展正则表达式的第一个具体值。sub函数返回替换的数量。出现在Repl参数指定的字符串中的&(和符号)由In参数指定的与Ere参数的指定的扩展正则表达式匹配的字符串替换。如果未指定In参数,缺省值是整个记录($0记录变量)。index(String1,String2)在由String1参数指定的字符串(其中有出现String2指定的参数)中,返回位置,从1开始编号。如果String2参数不在String1参数中出现
5、,则返回0(零)。length[(String)]返回String参数指定的字符串的长度(字符形式)。如果未给出String参数,则返回整个记录的长度($0记录变量)。blength[(String)]返回String参数指定的字符串的长度(以字节为单位)。如果未给出String参数,则返回整个记录的长度($0记录变量)。substr(String,M,[N])返回具有N参数指定的字符数量子串。子串从String参数指定的字符串取得,其字符以M参数指定的位置开始。M参数指定为将String参数中的
6、第一个字符作为编号1。如果未指定N参数,则子串的长度将是M参数指定的位置到String参数的末尾的长度。match(String,Ere)在String参数指定的字符串(Ere参数指定的扩展正则表达式出现在其中)中返回位置(字符形式),从1开始编号,或如果Ere参数不出现,则返回0(零)。RSTART特殊变量设置为返回值。RLENGTH特殊变量设置为匹配的字符串的长度,或如果未找到任何匹配,则设置为-1(负一)。split(String,A,[Ere])将String参数指定的参数分割为数组元素A
7、[1],A[2],...,A[n],并返回n变量的值。此分隔可以通过Ere参数指定的扩展正则表达式进行,或用当前字段分隔符(FS特殊变量)来进行(如果没有给出Ere参数)。除非上下文指明特定的元素还应具有一个数字值,否则A数组中的元素用字符串值来创建。tolower(String)返回String参数指定的字符串,字符串中每个大写字符将更改为小写。大写和小写的映射由当前语言环境的LC_CTYPE范畴定义。toupper(String)返回String参数指定的字符串,字符串中每个小写字符将更改为大
8、写。大写和小写的映射由当前语言环境的LC_CTYPE范畴定义。sprintf(Format,Expr,Expr,...)根据Format参数指定的printf子例程格式字符串来格式化Expr参数指定的表达式并返回最后生成的字符串。Ere都可以是正则表达式 gsub,sub使用[chengmo@centos5~]$awk'BEGIN{info="thisisatest2010test!";gsub(/[0-9]+/,"!",info);printinfo}' thisisatest