Installare shuf su OS X?


47

Ubuntu Linux ha un ottimo strumento chiamato shuf, che funziona come head tranne che ti dà dieci linee casuali. Non l'ho trovato su Homebrew. Qual è il modo più semplice per installarlo su OS X?


2
Fa parte del pacchetto di utilità di testo gnu. Sembra essere parte di coreutils, ma non so come roba è confezionata su homebrew.
jl8e,

Risposte:


76

Puoi installare coreutils con brew install coreutils.

shufsarà collegato come gshuf. Leggi le avvertenze quando installi coreutils.


2
L'avvertenza sembra essere che non dovresti usare i nomi propri degli strumenti, ma prefissali con g (come "gshuf"), giusto?
The Unfun Cat,

2
Sì, o facoltativamente configura il PERCORSO in modo da ottenere ciò che ti aspetti.
Jay Thompson,

3
brew install coreutilsinstalla utils con il prefisso gdi default su osx, quindi puoi installarlo usando il comando sopra.
Brad Parks,

13

Un'altra soluzione è quella di conoscere gli strumenti forniti dal fornitore. Certo, si potrebbe a catena jot, paste, sort, cut, heade ottenere gli stessi risultati.

jot -r "$(wc -l FILE)" 1 |
paste - FILE |
sort -n |
cut -f 2- |
head -n 10
  • jot produce un numero casuale da 1 al numero di righe in FILE per ogni riga
  • incolla incolla il numero casuale su ciascuna riga in FILE
  • ordina i numeri per ogni riga
  • cut rimuove il numero casuale da ogni riga
  • head emette le prime 10 righe

2
Mi piace molto l'essenza di questa risposta, non sai mai quando potresti voler fare la stessa cosa su un'altra macchina in cui non sei in grado di installare strumenti extra per qualsiasi motivo
forquare

Non ne avevo mai sentito parlare jotprima. Grazie per aver ampliato le mie conoscenze.
tommy.carstensen,

8

Puoi installare coreutils con Macports come

sudo port install coreutils

Questo metterà i programmi di base GNU in / opt / local / bin con AG anteposto

per esempio gshuf


2
L'ho usato con i macport, grazie. Homebrew non mi piace molto
Zorgatone,

Ottima risposta se si dispone dei diritti sudo. Io non.
tommy.carstensen,

@ tommy.carstensen Quindi chiedi al tuo amministratore - ti avranno reso difficile farlo per un motivo
Marco

3

Un'altra opzione è quella di installare il randomize-linespacchetto (homebrew), che ha un rlcomando che ha funzionalità simili a 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.