2011-11-01 60 views
0

我的文本文件,names.txt中,包含姓氏的每一行:打印隨機數序列上的一個文本文件中的行用awk

Smith 
Johnson 
Morgan 
... 
... 

我想增加7隨機0到100之間的數字在每一行,使它看起來像這樣:

Smith 76 94 56 99 32 21 11 
Johnson 54 15.2 19.8 32.66 44.99 22.63 18.99 
Morgan 99 18.6 24.75 99.22 35.18 65.34 54.22 
.... 
.... 

我在awk中使用此命令嘗試:

$ awk '{print $0; for (myvar = 1; myvar <= 7; myvar++) print rand()*100}' names.txt 

但這給了我

Smith 
76 
94 
56 

我知道我必須用printf,不知何故,使其工作,我試圖這樣的:

$ awk '{printf $0; for (myvar = 1; myvar <= 7; myvar++) printf rand()*100}' names.txt 

但是,我得沒有盡頭任何地方的線。整件事只是一條線。 我非常感謝任何建議。

回答

1

添加線路終端機在每一行的末尾

awk '{printf "%s ", $0; for (myvar = 1; myvar <= 7; myvar++) \ 
    printf "%d ", rand()*100; printf "\n"}' names.txt 
+0

謝謝!這正是我正在尋找的。 – user765195

+0

+1,但值得指出的是,提問者混淆了產生新行的print和printf,而沒有。另外注意'\ n'是給printf的換行符。 – msw

0
awk 'BEGIN { srand(); } 
{ 
    printf("%s", $0); 
    for (i=0;i<7;++i) 
    printf(" %d", 101*rand()); 
    printf("\n"); 
}' 

編輯:改變100 *蘭特(),以101 *蘭特()因爲蘭特()返回大於或等於的數爲零但小於一(不包括一個)

相關問題