下表列出了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
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
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
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
6
24
14
说明:srand函数为rand设置了一个新种子,起点是当前时刻。rand函数在0-25之间逃出一个随机数,然后将其化为整数。
参考资料:http://www.linuxawk.com/jiaocheng/304.html