使用awk在文本文件的一行上打印随机数序列

使用awk在文本文件的一行上打印随机数序列,awk,printf,Awk,Printf,我有一个文本文件names.txt,每一行都包含一个姓氏: Smith Johnson Morgan ... ... 我想在每行中添加七个介于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 '{prin

我有一个文本文件names.txt,每一行都包含一个姓氏:

Smith
Johnson
Morgan
...
...
我想在每行中添加七个介于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 
等等

我知道我必须使用printf,以某种方式使其工作,我尝试了以下方法:

$ awk '{printf $0; for (myvar = 1; myvar <= 7; myvar++) printf rand()*100}' names.txt 
$awk'{printf$0;for(myvar=1;myvar在每行末尾添加行终止符

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

对于(i=0;我感谢你!这正是我想要的。+1,尽管值得指出的是,提问者混淆了print(产生换行符)和printf(不产生换行符)。还需要注意的是,
\n
是给予printf的换行符。
awk '{printf "%s ", $0; for (myvar = 1; myvar <= 7; myvar++) \
     printf "%d ", rand()*100; printf "\n"}' names.txt
awk 'BEGIN { srand(); } 
{ 
  printf("%s", $0); 
  for (i=0;i<7;++i) 
    printf(" %d", 101*rand()); 
  printf("\n");
}'