1. 程式人生 > >awk=========awk 中隨機數的使用

awk=========awk 中隨機數的使用

sharp csharp echo xargs 個數字 gpo and def 種子

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

  

awk=========awk 中隨機數的使用