awk=========awk 中随机数的使用

root@dashazi:~/dingxue# cat aa
1234567
abcdefg

利用awk 处理
(1)echo {a..z}利用awk 随机打印一个字母?随机打印N个字母,假设n=3?
(2)随机生成六位数字和字母的随机组合 (3)随机取出以上字符的一列 (4)随机取出以上字符的五列

  

思路:

 随机打印一个数字在awk 中使用rand()函数,但是如果只是用rand();就会出现如下情况,

root@dashazi:~/dingxue# awk 'BEGIN{print rand()}'
0.237788
root@dashazi:~/dingxue# awk 'BEGIN{print rand()}'
0.237788
root@dashazi:~/dingxue# awk 'BEGIN{print rand()}'
0.237788
root@dashazi:~/dingxue# awk 'BEGIN{print rand()}'
0.237788

每一次都是相同的数字,但是如果使用srand()函数作为一个种子,就可以解决这个问题:

root@dashazi:~/dingxue# awk 'BEGIN{srand();print rand()}'
0.445072
root@dashazi:~/dingxue# awk 'BEGIN{srand();print rand()}'
0.150799

 

 

 

代码:

(1)
echo {a..z} |awk '{srand();a[i]=int(rand()*100%24+1)}{print $a[i]}'
 echo {a..z}| awk '{srand();for(i=1;i<=3;i++)a[i]=int(rand()*100%24+1)}{for(i=1;i<=3;i++)printf $a[i];printf RS}'

(2)
echo {a..z}|xargs echo {0..9}| awk '{srand();for(i=1;i<=NF;i++)a[i]=int(rand()*100%24+1)}{for(i=1;i<=6;i++)printf $a[i];printf RS}'

(3)
awk -F '' '{srand();a[i]=int(rand()*100%7+1)}{print $a[i]}' aa

(4)
awk -F '' '{srand();for(i=1;i<=NF;i++)a[i]=int(rand()*100%7+1)}{for(i=1;i<=5;i++)printf $a[i];printf RS}' aa

  

 

转载于:https://www.cnblogs.com/zcmdxj/p/8397242.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值