Страница 1 из 1

Shuf - случайная перестановка строк в shell

Добавлено: 12 апр 2018, 10:10
Chocobo
Shuf - утилита для генерации случайных перестановок в Unix-подобных операционных системах.
Используя команду shuf, мы можем случайным образом перемешивать строки заданного входного файла.
Утилита входит в GNU Coreutils, поэтому устанавливать ничего не нужно, она будет доступна вместе с базовой системой.


Примеры использования:

  • Сгенерируем текстовый файл на 10 нумерованных по порядку строк:

    Код: Выделить всё

    for i in {1..10}; do echo "testline$i" >> test_shuf.txt ; done
    Снимок экрана в 2018-04-12 09-47-17.png
       
  • Теперь выведем строки файла в случайном порядке

    Код: Выделить всё

    shuf test_shuf.txt
    Снимок экрана в 2018-04-12 09-50-32.png
    Разумеется, при каждом вызове команды порядок будет меняться.
       
  • Для вывода обработанного содержимого в другой файл - используется ключ -o

    Код: Выделить всё

    shuf before.txt -o after.txt
       
  • Чтоб выбрать нужное число строк из файла - ключ -n c аргументом в виде количества случайных строк

    Код: Выделить всё

    shuf test_shuf.txt -n 5
    Снимок экрана в 2018-04-12 09-56-15.png
       
  • Также вместо считывания строк из файла - можно направить программе аргументы на вход с помощью ключа -e, Принимаются как прямые последовательности так и результат операции итератора

    Код: Выделить всё

    shuf -e item1 item2 item3 item4 item5
    Снимок экрана в 2018-04-12 10-00-37.png
       
  • Ну и разумеется, ключи можно комбинировать между собой в произвольном порядке. К примеру, перемешаем список чисел от 1 до 10, выберем три строки и сохраним их в другой файл:

    Код: Выделить всё

    shuf -e {1..10} -n 3 -o new_shuf.txt
    Снимок экрана в 2018-04-12 10-05-29.png

Shuf - случайная перестановка строк в shell

Добавлено: 12 апр 2018, 19:15
achagaev
Надо будет коллегам алиас прописать на cat :blush:

Shuf - случайная перестановка строк в shell

Добавлено: 20 июн 2018, 13:59
Dja
Осталось найти применение :-D

Shuf - случайная перестановка строк в shell

Добавлено: 20 июн 2018, 15:02
Chocobo
Dja, например для статистики.
Чтоб не мурыжить миллионы записей - дернуть тысячу-другую произвольных, как репрезентативная выборка.

Shuf - случайная перестановка строк в shell

Добавлено: 20 июн 2018, 20:17
zuzabrik
Очередной способ сыграть в русскую рулетку. Пишем в файл шесть команд, одна из которых rm -rf /, запускам shuf и выполняем первую попавшуюся. :cray2:

Shuf - случайная перестановка строк в shell

Добавлено: 21 июн 2018, 09:24
Bill Williamson
Может быть полезен преподавателям, которым нужна случайная перестановка задач, тестов и т.п. Легко сделать уникальные варианты, чтобы друг у друга не списывали. :write: