Печать последовательности случайных чисел на строке в текстовом файле с использованием awk - PullRequest
1 голос
/ 01 ноября 2011

У меня есть текстовый файл 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 

но это дало мне

Smith
76
94
56

и т.д.

Я знаю, что для того, чтобы это работало, нужно использовать printf, и я попробовал это:

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

но при этом я нигде не получаю конца строк. Все это только одна строка. Я буду очень признателен за любые предложения.

Ответы [ 2 ]

1 голос
/ 01 ноября 2011
awk 'BEGIN { srand(); } 
{ 
  printf("%s", $0); 
  for (i=0;i<7;++i) 
    printf(" %d", 101*rand()); 
  printf("\n");
}'

Редактировать: изменено 100 * rand () на 101 * rand (), поскольку rand () возвращает число, большее или равное нулю, но меньше единицы (одно не входит)

1 голос
/ 01 ноября 2011

Добавить ограничитель строки в конце каждой строки

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