1. 程式人生 > >Linux shell:使用AWK產生隨機數/隨機字串

Linux shell:使用AWK產生隨機數/隨機字串

有時候做測試,需要一些隨機數,awk中的rand()函式就可以產生隨機數

rand()說明如下:
rand()函式返回[0,1)之間的浮點數
int( n * rand() ),返回[0,n)之間的整數,也就是0~n-1之間的隨機數
int( n * rand() ) + 1,返回1-n之間的隨機數

注意,這裡的int()是一個函式,不是表示整形,所以一定要加上括號,它的作用是取數字的整數部分

示例1: 產生隨機數
隨機產生10個學生的成績,取值範圍0-100

[email protected]:~$ awk '
> BEGIN {
>   for (i = 1; i <= 10; i++)
>       print int( 101 * rand() )
> }'
57
7
64
27
39
18
70
8
60
71

示例2:產生10個隨機的字串:
[email protected]:~$ cat randword.awk 
BEGIN {
        WORDNUM = 10
        for (i = 1; i <= WORDNUM; i++) {
                print randword(20)
        }
}

# randint(n): return a random integer number which is >= 1 and <= n
function randint(n) {
        return int(n *rand()) + 1
}

# randlet(): return a random letter, which maybe upper, lower or number. 
function randlet() {
        return substr("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", randint(62), 1)
}

# randword(LEN): return a rand word with a length of LEN
function randword(LEN) {
        randw=""
        for( j = 1; j <= LEN; j++) {
                randw=randw randlet()
        }
        return randw
}
[email protected]
:~$ awk -f randword.awk wxXe8fVGnC4ANvrQrYlp k9uwRkTNBpTQCrGNdsL4 ANbgdugqUFigTkhptKZC 1yGQGz1CW8Q6J1KJuzf1 KRCwdjYhqoKfpiVFgqxC asuwcoE2MN18JxFpyUrb 6MPydAXBFBDFJzBmq5JQ 6taOEQOjnwaH9bN47h6A fMZywlOZcoSLOgqjvd9R CUAPqkaeU9nLtv1xuslc [email protected]:~$

這裡有必要介紹一下,裡面用到了三個自定義函式:
 randint(n)返回一個1-n之間的隨機整數

 randlet()返回a-zA-Z0-9當中隨機的一個字元,62即前面那個字串的長度
 randword(LEN)則通過多次連線randlet()返回的隨機字元,返回一個隨機的字串,長度為LEN

參考資料:《The AWK Programming Language》

相關推薦

Linux shell使用AWK產生隨機數/隨機字串

有時候做測試,需要一些隨機數,awk中的rand()函式就可以產生隨機數 rand()說明如下: rand()函式返回[0,1)之間的浮點數 int( n * rand() ),返回[0,n)之間的整數,也就是0~n-1之間的隨機數 int( n * rand() ) +

Linux Shell文件目錄操作與實例

linux 文件 目錄 shell 本文介紹基礎的文件操作:創建,移動,編輯,刪除 文件和文件夾命令與案例:mkdir 創建目錄--創建兩個目錄tangym@ubuntu:~$ mkdir test2 test3--在test1下面創建一個新的目錄mydirtangym@ubuntu:~$ m

Linux Shell程式設計 awk命令

概述 awk是一種程式語言,用於在linux/unix下對文字和資料進行處理。資料可以來自標準輸入(stdin)、一個或多個檔案,或其它命令的輸出。它支援使用者自定義函式和動態正則表示式等先進功能,是linux/unix下的一個強大程式設計工具。它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的

linux shell${var1##*} ${bz1%,*}的意思

介紹下Shell中的${}、##和%%使用範例,本文給出了不同情況下得到的結果。 假設定義了一個變數為: 程式碼如下: file=/dir1/dir2/dir3/my.file.txt 可以用${ }分別替換得到不同的值: ${file#*/}:刪掉第一個 / 及其左邊的字串:dir1/dir2/d

shell生成指定範圍隨機數字串

shell 生成指定範圍隨機數與隨機字串 1.使用系統的 $RANDOM 變數 [email protected]:~$ echo $RANDOM17617$RANDOM 的範圍是 [0, 32767] 如需要生成超過32767的隨機數,可以用以下方

[Linux]shell基礎教程1-變數、字串、陣列、註釋

原創文章,歡迎轉載。轉載請註明:轉載自 祥的部落格 原文連結:https://blog.csdn.net/humanking7/article/details/84504500 文章目錄 @[toc] 環境

LINUX Shell複製資料夾的指令碼

#!/bin/sh# cpdir source_dir target_dir# author hjack# date:2006.3.25# copy dir#########variables define##########SOURCE_DIR=$1TARGET_DIR=$2CURRENT_DIR=`pwd

Linux命令awk求和、平均值、最大最小值

1、求和 cat data|awk '{sum+=$1} END {print "Sum = ", sum}' 2、求平均 cat data|awk '{sum+=$1} END {print "Average = ", sum/NR}' 3、求最大值 cat data|aw

已知有十六支男子足球隊參加2008 北京奧運會。寫一個程式,把這16 支球隊隨機分為4 個組。 注參賽球隊列表見附錄 注2使用Math.random 來產生隨機數。(也可以使用其它方法) 2. 2

/** * Created by whp on 2018/7/30. */ public class Test { public static void main(String[] args) { String[] str={"象牙海岸","阿根廷","澳大利亞","塞爾

Linux Shell(一)建立指令碼,變數、字串、陣列、輸入輸出

0.建立一個Shell指令碼: vim abc.sh 1.首行宣告所使用的shell: #!/bin/bash #!是一個特殊的識別符號,其後,跟著解釋此指令碼的shell路徑。 bash只是shell的一種,還有很多其它shell,如:sh,csh,ksh,t

Linux下生成隨機數隨機字串

1、生成長度為32的隨機字串 head -c 32 /dev/random | base64 該方式產生的隨機數效果比較好,但是,當不能產生隨機數時,它會阻塞在那裡,也就是為阻塞程式的執行 2、用/dev/urandom檔案產生 head -c 32 /

【轉】linux shell實現隨機數多種方法(date,random,uuid)

生成 需要 運算 one ont 數字 定義 支持 dev 在日常生活中,隨機數實際上經常遇到,想丟骰子,抓鬮,還有抽簽。呵呵,非常簡單就可以實現。那麽在做程序設計,真的要通過自己程序設計出隨機數那還真的不簡單了。現在很多都是操作系統內核會提供相應的api,這些原始參數是獲

java程序產生隨機數

math random number answer temp import java.util.Scanner;public class MathGame {public static void main(String[] args){int number1=(int)( Math.ran

Linux shell 編程(五)數組

array shell loop 數組 數組是有序的元素序列 。若將有限個類型相同的變量的集合命名,那麽這個名稱為數組名。組成數組的各個變量稱為數組的分量,也稱為數組的元素,有時也稱為下標變量。用於區分數組的各個元素的數字編號稱為下標。數組是在程序設計中,為了處理方便, 把具有相同類型的若幹元素按

Linux shell 編程(六)運算

運算 shell let expr 運算 表達式 表達式包含在或(())或[]內, 算數表達式:(()) ((expression)) 這個表達式是根據算術計算的規則來計算的。相當於let expression。 條件計算表達式:[] [expression] 這是內置命令tes

1 Linux shell 編程(七)流程控制語句

shell if else Linux 流程控制語句 在shell中如果在終端輸入多個命令,如果以&分隔則將命令放入後臺執行,如果以;分隔,則表示一個命令集合。shell允許使用邏輯操作符&&和||來作為命令分隔符,他們分別時AND和OR. && 如果前

Linux shell 編程(八)循環結構

for while until shell bash 循環語句 在shell中的循環語句如下: for while unitl case select for/while/unitl 必須以done結尾 for循環 for循環用來遍歷數組(數據列表)或執行計算語句。 在shell中

Linux shell 腳本報錯/bin/bash^M: bad interpreter: No such file or directory

詭異 參數 當前 use linu 信息 mar int 查看 今天遇到一個很詭異的問題,一直運行很正常的shell腳本失敗了,只是昨天增加了一個參數而已。 報錯信息: /bin/bash^M: bad interpreter: No such file or direc

linux shell 字串長度

本篇內容主要包括以下內容:    獲取字串長度的方法    各方法間效能比較    相關內容補充 說明:本篇內容為學習shell  程式設計(老男孩教程) 筆記,部分內容為相關視訊課程內容,補充部

Linux基礎Shell指令碼入門

Shell 指令碼(shell script),是一種為 shell 編寫的指令碼程式,業界所說的 shell 通常都是指 shell 指令碼。(區分於shell,shell 和 shell script 是兩個不同的概念。Shell 是一個用 C 語言編寫的程式,它是使用者使用 Lin