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

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

Автор темы
Chocobo
Сообщения: 9251
Зарегистрирован: 27 авг 2016, 19:57
Решено: 200
Откуда: НН
Благодарил (а): 645 раз
Поблагодарили: 2661 раз

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

Сообщение Chocobo » 12 апр 2018, 07: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
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение
   
Изображение


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

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

Сообщение achagaev » 12 апр 2018, 16:15

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

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

Dja
Сообщения: 6190
Зарегистрирован: 27 авг 2016, 17:03
Решено: 27
Откуда: Voskresensk
Благодарил (а): 901 раз
Поблагодарили: 656 раз

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

Сообщение Dja » 20 июн 2018, 10:59

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

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

Автор темы
Chocobo
Сообщения: 9251
Зарегистрирован: 27 авг 2016, 19:57
Решено: 200
Откуда: НН
Благодарил (а): 645 раз
Поблагодарили: 2661 раз

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

Сообщение Chocobo » 20 июн 2018, 12:02

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

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

zuzabrik
Сообщения: 1636
Зарегистрирован: 29 авг 2016, 09:08
Решено: 19
Благодарил (а): 103 раза
Поблагодарили: 510 раз

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

Сообщение zuzabrik » 20 июн 2018, 17:17

Очередной способ сыграть в русскую рулетку. Пишем в файл шесть команд, одна из которых rm -rf /, запускам shuf и выполняем первую попавшуюся. :cray2:
Наш IRC-канал для общения: #linuxmint-ru на сервере irc.spotchat.org
Для захода откройте HexChat, выберите сервер Linux Mint и наберите в чате /join #linuxmint-ru
Или любым другим удобным способом ;)

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

Bill Williamson
Сообщения: 927
Зарегистрирован: 31 авг 2016, 10:38
Решено: 34
Благодарил (а): 290 раз
Поблагодарили: 247 раз

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

Сообщение Bill Williamson » 21 июн 2018, 06:24

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

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