速查笔记(Linux Shell编程上)(4)

7.    内置函数:
       1) sub/gsub(regexp, substitution string, [target string]); gsub和sub的差别是sub只是替换每条记录中第一个匹配正则的, gsub则替换该记录中所有匹配
       正则的, 就是vi中s/src/dest/ 和s/src/dest/g的区别, 如果target string没有输入, 其缺省值是$0.
       awk '{sub(/Tom/,"Thomas"); print}' employees
       awk '{sub(/Tom/,"Thomas",$1); print}' employees
       
       awk '{gsub(/Tom/,"Thomas"); print}' employees
       awk '{gsub(/Tom/,"Thomas",$1); print}' employees
       
       2) index(string ,substring) 返回子字符串第一次被匹配的位置(1开始)
       awk 'BEGIN{print index("hollow", "low") }'
       
       3) length(string) 返回字符串的长度.
       awk 'BEGIN{print length("hello")}'
       
       4) substr(string, starting position, [length])
       awk 'BEGIN{print substr("Santa Claus",7,6)}'
       awk 'BEGIN{print substr("Santa Claus",7)}'
       
       5) match(string, regexp) 返回正则表示在string中的位置, 没有定位返回0
       awk 'BEGIN{print match("Good ole USA",/[A-Z]+$/)}'

       6) toupper(string)和tolower(string) 仅仅gawk有效.
       awk 'BEGIN{print toupper("linux"), tolower("BASH")}'

       7) split(string, array, [field seperator]) 如果不输入field seperator, FS内置变量作为其缺省值.
       awk 'BEGIN{split("12/24/99",date,"/"); for (i in date) {print date[i]} }'
       
       8) variable = sprintf(format, ...) 和printf的最大区别就是他返回格式化后的字符串.
       awk '{line = sprintf("%-15s %6.2f ",$5,$6); print line}' datafile
       
       9) systime() 返回1970/1/1到当前时间的整秒数.
       
       10) variable = strftime(format, [timestamp])
       
       11) 数学函数: atan2(x,y), cos(x), exp(x)[求幂], int(x)[求整数], log(x), rand()[随机数], sin(x), sqrt(x), srand(x)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyfgfd.html