Odpowiednik gnu `sort -R` na OSX?

37

Narzędzie sorttekstowe GNU zawiera niestandardową -Ropcję losowego wprowadzania wierszy.

OSX sortnie ma tego rozszerzenia. Czy dostępna jest podobna funkcjonalność w innym filtrze tekstowym?

phs
źródło

Odpowiedzi:

50

Jeśli chcesz, możesz zainstalować GNU sortpoprzez pakiet coreutils GNU przez Homebrew , który jest menedżerem pakietów dla OS X.

Uruchomienie tego spowoduje zainstalowanie Homebrew.

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

Następnie postępuj zgodnie z instrukcjami instalacji. Po zainstalowaniu Homebrew uruchom

brew install coreutils

Spowoduje to zainstalowanie GNU sort as gsort, dzięki czemu będziesz mógł używać go jak sortna dowolnym systemie GNU Linux.


Alternatywnie, spójrz na te pytania dotyczące przepełnienia stosu, które wspominają kilka metod:

Jak mogę randomizować linie w pliku za pomocą standardowych narzędzi w systemie Redhat Linux
Jak mogę przetasować linie pliku tekstowego w linii poleceń Uniksa?

Lub spójrz na tę stronę commandlinefu.com:

Losuj linie (przeciwieństwo | sortowania)

slhck
źródło
Opcja homebrew działa, podobnie jak połączone konstrukcje awk lub perl (choć wyobrażam sobie, że są wolniejsze). Reszta nie wchodzi w grę, ponieważ są one tylko GNU.
phs
7

W systemie OS X, jeśli nie chcesz instalować homebrew (ale naprawdę powinieneś), możesz użyć perllub ruby:

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

lub

ruby -e 'puts STDIN.readlines.shuffle'
mivk
źródło
0

Użycie shuflub sortz coreutilspakietu, ale potem masz, aby dodać /usr/local/bindo swojej PATHw ~/.bashrcpliku, na przykład:

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

Alternatywnie możesz spróbować ex:

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

Źródło: Jak przetasować listę w vimie?

kenorb
źródło
0

Możesz zainstalować rlpolecenie za pomocą homebrew ( brew install randomize-lines).

Jest dość szybki i ma opcje ograniczania liczby zwracanych elementów, a także określania separatora (na przykład spacja zamiast przesunięcia wiersza).

(Zobacz także https://stackoverflow.com/a/42056195/43615 .)

SuperTempel
źródło