35

Утилита sort текста GNU имеет нестандартную опцию -R для рандомизации входных строк.

sort OSX не имеет этого расширения. Есть ли подобная функциональность в другом текстовом фильтре?

4 ответа4

49

Если вы хотите, вы можете установить GNU sort через пакет coreutils GNU поверх Homebrew, который является менеджером пакетов для OS X.

Запуск этого установит Homebrew.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Затем просто следуйте инструкциям по установке. Когда Homebrew установлен, запустите

brew install coreutils

Это установит GNU sort как gsort , так что вы можете использовать его как sort на любом GNU Linux.


Кроме того, взгляните на эти вопросы переполнения стека, в которых упоминается несколько методов:

Как я могу рандомизировать строки в файле, используя стандартные инструменты на Redhat Linux
Как я могу перетасовать строки текстового файла в командной строке Unix?

Или взгляните на эту страницу commandlinefu.com:

Случайные линии (противоположные | сортировать)

5

В OS X, если вы не хотите устанавливать homebrew (но вам это действительно нужно), вы можете использовать perl или ruby:

perl -MList::Util -e 'print List::Util::shuffle <>'

или же

ruby -e 'puts STDIN.readlines.shuffle'
0

Используйте shuf или sort из пакета coreutils , но затем вам нужно добавить /usr/local/bin в ваш PATH в файле ~/.bashrc , например:

export PATH=/usr/local/sbin:/usr/local/bin:$PATH

В качестве альтернативы вы можете попробовать ex:

ex -s +"%s/^/\=reltimestr(reltime())[-2:].' '" +"sort n" +"%s/^\S* //" +%p -cq! /dev/stdin

Источник: Как перемешать список в vim?

0

Вы можете установить команду rl через homebrew (brew install randomize-lines).

Он достаточно быстрый и имеет возможность ограничить количество возвращаемых элементов, а также указать разделитель (например, пробел вместо перевода строки).

(См. Также https://stackoverflow.com/a/42056195/43615.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .