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


37

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

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

Ответы:


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:

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


Опция 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'

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 .)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.