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

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#1

12 апр 2018, 10:10

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
Изображение
   
Изображение

no avatar

achagaev
Сообщения: 34
Зарегистрирован: 09 ноя 2017, 10:21
Благодарил (а): 5 раз
Поблагодарили: 6 раз
Контактная информация:

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

#2

12 апр 2018, 19:15

Надо будет коллегам алиас прописать на cat :blush:

Аватара пользователя

Dja
Сообщения: 6875
Зарегистрирован: 27 авг 2016, 20:03
Решено: 30
Откуда: Voskresensk
Благодарил (а): 1310 раз
Поблагодарили: 724 раза
Контактная информация:

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

#3

20 июн 2018, 13:59

Осталось найти применение :-D

Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

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

#4

20 июн 2018, 15:02

Dja, например для статистики.
Чтоб не мурыжить миллионы записей - дернуть тысячу-другую произвольных, как репрезентативная выборка.
Изображение
   
Изображение

Аватара пользователя

zuzabrik
Сообщения: 1744
Зарегистрирован: 29 авг 2016, 12:08
Решено: 20
Благодарил (а): 108 раз
Поблагодарили: 521 раз
Контактная информация:

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

#5

20 июн 2018, 20:17

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

Аватара пользователя

Bill Williamson
Сообщения: 928
Зарегистрирован: 31 авг 2016, 13:38
Решено: 34
Благодарил (а): 288 раз
Поблагодарили: 249 раз
Контактная информация:

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

#6

21 июн 2018, 09:24

Может быть полезен преподавателям, которым нужна случайная перестановка задач, тестов и т.п. Легко сделать уникальные варианты, чтобы друг у друга не списывали. :write:
Изображение

Закрыто

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя