Вариация с репутацией для строк файла - PullRequest
0 голосов
/ 01 мая 2019

У меня есть файл

4 5 6 6
1 7 5 5 
7 0 2 1
7 8 0 6

, и я хотел бы создать файлы с произвольно выбранными строками из этого файла с репутацией.Таким образом, выходные данные могут быть, например:

4 5 6 6
1 7 5 5 
1 7 5 5
7 8 0 6


7 8 0 6
1 7 5 5 
1 7 5 5
7 8 0 6

Я имею в виду, что некоторые строки будут в выводе больше раз, некоторые строки - ноль раз.Можно ли составить список случайных чисел с репутацией и в соответствии с этим выбрать строки из ввода?Это возможно в awk или какой-то другой язык более уместен?

Ответы [ 3 ]

3 голосов
/ 01 мая 2019

Если это не все, что вам нужно:

$ shuf -n $(wc -l < file) -r file
4 5 6 6
7 8 0 6
1 7 5 5
1 7 5 5

, затем отредактируйте свой вопрос, чтобы уточнить ваши требования.

2 голосов
/ 01 мая 2019

Не понимаю концепции репутации , но вот способ, использующий только случайность:

$ awk -v seed=$RANDOM '{           # set the random seed externally
    a[NR]=$0                       # hash records to a
}
END {
    srand(seed)
    for(i=1;i<=4;i++)              # 4 is the number of records to output
        print a[int(1+rand()*NR)]  # get a random array element and output it
}' file

Пример вывода:

7 8 0 6
7 8 0 6
7 8 0 6
1 7 5 5 
1 голос
/ 01 мая 2019

Вы также можете сделать это с помощью coreutils shuf и sed, например:

n=$(wc -l < infile)
shuf -n $n -i 1-$n -r | sed 's/$/p/' | sed -nf - infile

Пример вывода:

4 5 6 6
4 5 6 6
1 7 5 5
1 7 5 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...