Используя команду shuf, мы можем случайным образом перемешивать строки заданного входного файла.
Утилита входит в GNU Coreutils, поэтому устанавливать ничего не нужно, она будет доступна вместе с базовой системой.
Примеры использования:
- Сгенерируем текстовый файл на 10 нумерованных по порядку строк:
Код: Выделить всё
for i in {1..10}; do echo "testline$i" >> test_shuf.txt ; done
- Теперь выведем строки файла в случайном порядке
Разумеется, при каждом вызове команды порядок будет меняться.
Код: Выделить всё
shuf test_shuf.txt
- Для вывода обработанного содержимого в другой файл - используется ключ
-o
Код: Выделить всё
shuf before.txt -o after.txt
- Чтоб выбрать нужное число строк из файла - ключ
-n
c аргументом в виде количества случайных строкКод: Выделить всё
shuf test_shuf.txt -n 5
- Также вместо считывания строк из файла - можно направить программе аргументы на вход с помощью ключа
-e
, Принимаются как прямые последовательности так и результат операции итератораКод: Выделить всё
shuf -e item1 item2 item3 item4 item5
- Ну и разумеется, ключи можно комбинировать между собой в произвольном порядке. К примеру, перемешаем список чисел от 1 до 10, выберем три строки и сохраним их в другой файл:
Код: Выделить всё
shuf -e {1..10} -n 3 -o new_shuf.txt