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?


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.


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

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


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