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)
速查笔记(Linux Shell编程上)(4)
内容版权声明:除非注明,否则皆为本站原创文章。