Эквивалент gnu `sort -R` на OSX?

37

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

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

PHS
источник

Ответы:

50

Если вы хотите, вы можете установить 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:

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

slhck
источник
Опция homebrew работает так же, как и связанные конструкции awk или perl (хотя я думаю, что они медленнее.) Остальные не работают, так как они только для GNU.
PHS
7

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

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

или

ruby -e 'puts STDIN.readlines.shuffle'
mivk
источник
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?

kenorb
источник
0

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

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

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

SuperTempel
источник