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

A.字符串函数:
    1.sub和gsub函数:
              sub函数在记录中查找能够匹配正则表达式的最长且最靠左的字串,然后用替换子串替换找到的子串。默认是整个记录,可指定目标字符串。
             sub(regualr expression,substitution string);
             sub(regualr expression,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  '{print index{hollow","low")}' filename;

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

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值