Zainstalować shuf na OS X?

49

Ubuntu Linux ma świetne narzędzie o nazwie shuf, które działa jak head, tyle że daje dziesięć losowych linii. Nie mogłem tego znaleźć na Homebrew. Jaki jest najprostszy sposób zainstalowania go w systemie OS X?

The Unfun Cat
źródło
2
Jest to część pakietu narzędzi tekstowych GNU. Wydaje się być częścią coreutils, ale nie wiem, jak rzeczy są pakowane w homebrew.
jl8e

Odpowiedzi:

78

Możesz zainstalować coreutils za pomocą brew install coreutils.

shufzostanie powiązany jako gshuf. Przeczytaj ostrzeżenia podczas instalacji coreutils.

Jay Thompson
źródło
2
Zastrzeżenie wydaje się po prostu polegać na tym, że nie powinieneś używać prawidłowych nazw narzędzi, ale poprzedzić je g (jak „gshuf”), prawda?
The Unfun Cat
2
Tak, lub opcjonalnie skonfiguruj ŚCIEŻKĘ, aby uzyskać to, czego oczekujesz.
Jay Thompson,
3
brew install coreutilsinstaluje utils z prefiksem gdomyślnie na osx, dzięki czemu można go zainstalować za pomocą powyższej komendy.
Brad Parks,
13

Jeszcze innym rozwiązaniem jest poznanie narzędzi dostarczonych przez dostawcę. Na pewno mógł łańcuch jot, paste, sort, cut, headi uzyskać takie same wyniki.

jot -r "$(wc -l FILE)" 1 |
paste - FILE |
sort -n |
cut -f 2- |
head -n 10
  • jot tworzy losową liczbę od 1 do liczby linii w PLIKU dla każdej linii
  • wklej wkleja losową liczbę do każdej linii w PLIKU
  • sort sortuje numerycznie każdą linię
  • cut usuwa losową liczbę z każdej linii
  • head wypisuje pierwsze 10 linii
fd0
źródło
2
Naprawdę podoba mi się istota tej odpowiedzi, nigdy nie wiadomo, kiedy możesz zrobić to samo na innym komputerze, na którym nie możesz zainstalować dodatkowych narzędzi z jakiegokolwiek powodu
forquare
Nigdy wcześniej o tym nie słyszałem jot. Dzięki za poszerzenie mojej wiedzy.
tommy.carstensen
9

Możesz zainstalować coreutils z Macports as

sudo port install coreutils

Spowoduje to umieszczenie podstawowych narzędzi GNU w / opt / local / bin z dodanym ag

na przykład gshuf

użytkownik151019
źródło
2
Korzystałem z tego z Macports, dzięki. Nie przepadam za Homebrew
Zorgatone
Świetna odpowiedź, jeśli masz prawa sudo. Ja nie.
tommy.carstensen
@ tommy.carstensen Następnie poproś administratora - będą ci utrudnić to z jakiegoś powodu
user151019
3

Inną opcją jest instalacja randomize-linespakietu (homebrew), który ma rlpolecenie o podobnej funkcjonalności do shuf.

Usage: rl [OPTION]... [FILE]...
Randomize the lines of a file (or stdin).

  -c, --count=N  select N lines from the file
  -r, --reselect lines may be selected multiple times
  -o, --output=FILE
                 send output to file
  -d, --delimiter=DELIM
                 specify line delimiter (one character)
  -0, --null     set line delimiter to null character
                 (useful with find -print0)
  -n, --line-number
                 print line number with output lines
  -q, --quiet, --silent
                 do not output any errors or warnings
  -h, --help     display this help and exit
  -V, --version  output version information and exit
rogerdpack
źródło