Как случайным образом перемешать строки (противоположно | sort)

perl -wl -e '@f=; for $i (0 .. $#f) { $r=int rand ($i+1); @f[$i, $r]=@f[$r,$i] if ($i!=$r); } chomp @f; print join $/, @f;' try.txt


Команда «perl -wl -e ‘@f=; for $i (0 .. $#f) { $r=int rand ($i+1); @f[$i, $r]=@f[$r,$i] if ($i!=$r); } chomp @f; print join $/, @f;'» выполняет случайное перемешивание строк в файле «try.txt».

Она читает содержимое файла «try.txt» и сохраняет каждую строку в массиве «@f». Затем она выполняет цикл, проходящий через каждую индексную позицию массива «@f». На каждой итерации цикла она выбирает случайно сгенерированный индекс «$r» в диапазоне от 0 до текущей позиции «$i» и меняет местами строки с индексами «$i» и «$r» в массиве «@f», если «$i» и «$r» не равны друг другу. Затем она удаляет символы новой строки с помощью функции «chomp» для каждого элемента массива «@f». Наконец, она объединяет элементы массива «@f» с помощью разделителя «$/» (стандартный символ новой строки) и выводит результат на экран с помощью функции «print».

Эта команда может быть полезна, если вам нужно случайно перемешать строки в файле. Альтернативой может быть использование специализированных утилит, таких как «shuf» в Linux или функций случайной сортировки в других языках программирования. Передаваемый команде аргумент «try.txt» указывает имя входного файла.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *