awk内置算术函数

时间:2023-01-01 16:05:34

下表列出了awk的内置算术函数,表中的x和y是任意表达式。
算术函数

函数名 返回值
atan2(x,y) 值域内y/x的反正切
cos(x) x的余弦,x为弧度
exp(x) x的e指数函数
int(x) x的整数部分,当x>0时,向下取整
log(x) x的自然对数(底数为e)
rand() 随机数r(0<r<1)< td="">
sin(x) x的正弦,x为弧度
sqrt(x) x的平方根
srand(x) x是rand()的新种子


整数函数
int函数将舍去小数点后的所有数字,生成一个整数。int函数不执行舍入操作。
范例

$ awk  'END{print 31/3}' filename
10.3333
$ awk  'END{print int(31/3)}' filename
10

说明:
1.END块将除法运算的结果打印成浮点数形式。
2.END块中的int函数把除法运算的结果从小数点开始舍去,显示的结果是一个整数。


随机数发生器
rand函数
 rand函数生成一个大于或等于0、小于1的伪随机浮点数。
范例

$ awk  '{print rand()}' filename
0.513871
0.175726
0.308634

$ awk  '{print rand()}' filename
0.513871
0.175726
0.308634

说明:
每次运行程序都打印出同一组数字。可以用srand函数为rand函数的种子设一个新值,否则,如上例所示,每次调用rand都只会重复出现同一数列。

srand函数 如果未指定参数,srand函数会根据当前时刻为rand函数生成一个种子。srand(x)则把x设成种子。通常,程序应该在运行过程中不断地改变x的值。
范例

$ awk  'BEGIN{srand()}{print rand()}' filename
0.508744
0.639485
0.657277
$ awk  'BEGIN{srand()}{print rand()}' filename
0.133518
0.324747
0.691794

说明:srand函数为rand设置了一个新种子,起点是当前时刻。因此,每次调用rand都打印出一组新的数列。
范例

$ awk  'BEGIN{srand()}{print 1+int(rand()*25)}'
6
24
14

说明:srand函数为rand设置了一个新种子,起点是当前时刻。rand函数在0-25之间逃出一个随机数,然后将其化为整数。

参考资料:http://www.linuxawk.com/jiaocheng/304.html