Instalar shuf no OS X?


49

O Ubuntu Linux possui uma ótima ferramenta chamada shuf, que funciona como cabeça, exceto que fornece dez linhas aleatórias. Não consegui encontrar no Homebrew. Qual é a maneira mais simples de instalá-lo no OS X?


2
Faz parte do pacote de utilitários de texto do gnu. Parece fazer parte do coreutils, mas não sei como as coisas são empacotadas no homebrew.
Jl8e

Respostas:


78

Você pode instalar o coreutils com brew install coreutils.

shufserá vinculado como gshuf. Leia as advertências ao instalar o coreutils.


2
A ressalva parece ser que você não deve usar os nomes próprios das ferramentas, mas prefixá-los com g (como "gshuf"), certo?
The Unfun Cat

2
Sim, ou opcionalmente configure seu PATH para que você obtenha o que espera.
Jay Thompson

3
brew install coreutilsinstala os utils com o prefixo gpor padrão no OSX, assim você pode instalá-lo usando o comando acima.
Brad Parks

13

Outra solução é aprender sobre as ferramentas fornecidas pelo fornecedor. Certamente você poderia cadeia jot, paste, sort, cut, heade obter os mesmos resultados.

jot -r "$(wc -l FILE)" 1 |
paste - FILE |
sort -n |
cut -f 2- |
head -n 10
  • jot produz um número aleatório de 1 ao número de linhas em FILE para cada linha
  • colar cola o número aleatório em cada linha do arquivo
  • classificar classifica numérico cada linha
  • cut remove o número aleatório de cada linha
  • cabeça produz as primeiras 10 linhas

2
Eu realmente gosto a essência desta resposta, você nunca sabe quando você pode querer fazer a mesma coisa em outra máquina onde você não é capaz de instalar ferramentas extra por qualquer motivo
forquare

Eu nunca tinha ouvido falar jotantes. Obrigado por expandir meu conhecimento.
Tommy.carstensen

9

Você pode instalar coreutils com Macports como

sudo port install coreutils

Isso colocará os utilitários principais do GNU em / opt / local / bin com um ag prefixado

por exemplo gshuf


2
Eu usei este com macports, obrigado. Eu não gosto de Homebrew tanto
Zorgatone

Ótima resposta se você possui direitos de sudo. Eu não.
tommy.carstensen

@ tommy.carstensen Em seguida, pergunte ao seu administrador - eles dificultaram a execução por um motivo #
user151019 /

3

Outra opção é instalar o randomize-linespacote (homebrew), que possui um rlcomando com funcionalidade semelhante ao 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.