Еквівалент 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 сортування як gsort, так що ви можете використовувати його як sortу будь-якому GNU Linux.


Крім того, перегляньте ці запитання щодо переповнення стека, де згадується пара методів:

Як я можу рандомізувати рядки у файлі за допомогою стандартних інструментів Redhat Linux.
Як можна переміщувати рядки текстового файлу в командному рядку Unix?

Або подивіться на цю сторінку commandlinefu.com:

Рандомізувати лінії (навпроти | сортування)


Опція homebrew працює так само, як і пов'язані конструкції awk або perl (хоча я думаю, що вони повільніші.) Решта не йде, оскільки вони лише для GNU.
phs

7

У ОС X, якщо ви не хочете встановлювати домашню мову (але це дійсно слід), ви можете використовувати 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.