shell学习8--awk中常用的内置函数

来源:互联网 发布:java开发人事管理系统 编辑:程序博客网 时间:2024/05/22 00:28
A.字符串函数:
   1.sub和gsub函数:
           sub函数在记录中查找能够匹配正则表达式的最长且最靠左的字串,然后用替换子串替换找到的子串。默认是整个记录,可指定目标字符串。
           sub(regualrexpression,substitution string);
           sub(regualrexpression,substitution string,target string);
         eg:   awk'{sub(/Mac/,"MacIntosh"); print}' filename
                 awk'{sub(/Mac/,"macIntosh",$1);print}' filename
           gsub类似于sub的用法,但是sub只对目标串中出现的第一个匹配进行替换。gsub则对字符串中的正则表达式进行全局替换,即替换出现在目标串的每一次匹配成功的子串。

   2.index函数:index函数返回子串在字符串中的第一次出现的位置。从1开始算起。
          index(string,substring)
          eg: awk  '{printindex{hollow","low")}' filename;

   3.lenght函数:这个函数常用,返回字符串的字符个数,支持中文字符
            length(string) ; eg:  awk 'BEGIN{printlength("helloworld")}'

   4.substr函数:该函数返回从字符串指定位置开始的一个子串(从1开始算起)。如果指定了子串的长度,则返回字符串相应的部分。如果指定长度超出极限,则返回实际内容。
           substr(string ,startingposition);
           sbustr(string,startingposition,length fo substring);
           eg: awk 'BEGIN{printsubstr("Santa Claus",7,6)}'
  
    5.match函数:该函数用于返回正则表达式在字符串中出现的位置,如果没有出现,则返回0.内置变量RSTART保存开始位置,RLEGNTH保存匹配到的长度。
            match(string,regularexpression)
           eg: awk'BEGIN{start=match("good morning everyone",/n... e/); printstart,RSTART,RLENGH}'

    6.split函数:该函数使用有用户自定义的分割符来分割一个字符串,保存到一个数组中。如果没有提供分割符,则使用FS作为分割符。
         split(string,array,fieldseparator);
         split(string,array);
         eg: awk 'BEGIN{split("2013/06/16",date,"/");print date[2],date[3]}'

    7.printf函数:同C语言的printf用法。

B.常用算术函数:
      1.int(x):    x的整数部分,直接去掉小数部分,不四舍五入。
      2.cos(x):   x的余弦值,x是弧度
      3.sin(x):    x的正弦值,x是弧度
      4.exp(x):   x和e的指数函数
      5.log(x):    x的自然对数,底数为e
      6.sqrt(x):   x的平方根
      7.rand( ):   返回一个0到1之间的随机数
      8.srand(x):设定rand的种子,常与rand()一起使用,以产生不同的随机数。
           eg: awk'BEGIN{srand( );print rand( )}'

C.用户自定与函数:脚本中凡是可以出现模式操作规则的位置都可以放置用户自定义函数。
     function function_name(parameter1,parameter2....){
             statements
              return expression
     }
     注意事项:
    1.变量的传递是传值调用,而且变量只在该函数中局部有效。数组则是地址引用。
    2.函数中出现的任何变量,如果不是作为参数列表传进来的,都是全局变量。
     3.调用函数时1如果没有指定某个形参的值,则设定为空。
0 0
原创粉丝点击