Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

GAWK 手册(八)

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

第八章 内建函式(Built-in Functions)

  内建函式是 gawk 内建的函式,可在 gawk 程式的任何地方呼叫内建函式。

8.1 数值方面的内建函式

  int(x) 求出 x 的整数部份,朝向 0 的方向做舍去。例如:int(3.9) 是 3,int(-3.9) 是 -3。

(p36 of 46) 

  sqrt(x) 求出 x 正的平方根值。例 sqrt(4)=2

  exp(x) 求出 x 的次方。例 exp(2) 即是求 e*e 。

  log(x) 求出 x 的自然对数。

  sin(x) 求出 x 的 sine 值,x 是弪度量。

  cos(x) 求出 x 的 cosine 值,x 是弪度量。

  atan2(y,x) 求 y/x 的 arctangent 值,所求出的值其单位是弪度量。

  rand() 得出一个乱数值。此乱数值平均分布在 0 和 1 之间。这值不会是 0,也不会是 1。

  每次执行 gawk,rand 开始产生数字从相同点或 seed。

  srand(x) 设定产生乱数的开始点或 seed 为 x。如果在第二次你设定相同的 seed 值,你将再度得到相同序列的乱数值。

  如果省略引数 x,例如 srand(),则现在的日期、时间会被当成 seed。这个方法可使得乱数值是真正不可预测的。

  srand 的传回值(return value)是前次所设定的 seed 值。

8.2 字串方面的内建函式


index(in, find) 
(p37 of 46) 

  它会在字串 in 里面,寻找字串 find 第一次出现的地方,传回值是字串 find 出现在字串 in 里面的位置。如果在字串 in 里面找不到字 串 find,则传回值为 0。

  例如:


print index("peanut","an") 

  会印出 3。

length(string) 

  求出 string 有几个字元。

  例如:

length("abcde") 

  是 5。


match(string,regexp) 

  match 函式会在字串 string 里面,寻找符合 regexp 的最长、最靠左边的子字串。传回值是 regexp 在 string 的开始位置,即 index 值。

  match 函式会设定内在变数 RSTART 等於 index,它也会设定内在变数 RLENGTH 等於符合的字元个数。如果不符合,则会设定 RSTART 为 0、RLENGTH 为 -1。


(p38 of 46) 
sprintf(format,expression1,...) 

  举 printf 类似,但是 sprintf 并不印出,而是传回字串。

  例如:

sprintf("pi = %.2f (approx.)',22/7) 

  传回的字串为"pi = 3.14 (approx.)"

sub(regexp, replacement,target) 

  在字串 target 里面,寻找符合 regexp 的最长、最靠左边的地方, 以字串 replacement 代替最左边的 regexp。

  例如:


str = "water, water, everywhere" 
sub(/at/, "ith",str) 

  结果字串str会变成

"wither, water, everywhere" 
gsub(regexp, replacement, target) 

  gsub 与前面的 sub 类似。在字串 target 里面,寻找符合 regexp 的所有地方,以字串 replacement 代替所有的 regexp。

  例如:


(p39 of 46) 
str="water, water, everywhere" 
gsub(/at/, "ith",str) 

  结果字串str会变成


'wither, wither, everywhere" 
substr(string, start, length) 

  传回字串 string 的子字串,这个子字串的长度为 length 个字元, 从第 start 个位置开始。

  例如:

substr("washington",5,3) 

  传回值为"ing"

  如果 length 没有出现,则传回的子字串是从第 start 个位置开始至结束。

  例如:



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:GAWK 手册(七)   下一篇:GAWK 手册(九)

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章