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?

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)


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'

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?


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.