Instal shuf pada OS X?

49

Ubuntu Linux memiliki alat hebat yang disebut shuf, yang bekerja seperti kepala kecuali bahwa ia memberi Anda sepuluh baris acak. Saya tidak dapat menemukannya di Homebrew. Apa cara paling sederhana untuk menginstalnya di OS X?

Kucing Unfun
sumber
2
Itu bagian dari paket utilitas teks gnu. Tampaknya menjadi bagian dari coreutils, tapi saya tidak tahu bagaimana barang dikemas dalam homebrew.
jl8e

Jawaban:

78

Anda dapat menginstal coreutils dengan brew install coreutils.

shufakan ditautkan sebagai gshuf. Baca peringatan ketika Anda menginstal coreutils.

Jay Thompson
sumber
2
Peringatan sepertinya adalah bahwa Anda seharusnya tidak menggunakan nama-nama alat yang tepat, tetapi awali dengan g (seperti "gshuf"), kan?
The Unfun Cat
2
Yap, atau secara opsional mengkonfigurasi PATH Anda sehingga Anda mendapatkan apa yang Anda harapkan.
Jay Thompson
3
brew install coreutilsinstal utils dengan awalan gsecara default di osx, jadi Anda dapat menginstalnya menggunakan perintah di atas.
Brad Parks
13

Namun solusi lain adalah belajar tentang alat yang disediakan oleh vendor. Tentu saja Anda bisa rantai jot, paste, sort, cut, headdan mendapatkan hasil yang sama.

jot -r "$(wc -l FILE)" 1 |
paste - FILE |
sort -n |
cut -f 2- |
head -n 10
  • jot menghasilkan angka acak dari 1 hingga jumlah baris dalam FILE untuk setiap baris
  • tempelkan nomor acak ke setiap baris dalam FILE
  • sortir jenis numerik setiap baris
  • cut menghapus nomor acak dari setiap baris
  • head menghasilkan 10 baris pertama
fd0
sumber
2
Saya sangat suka esensi dari jawaban ini, Anda tidak pernah tahu kapan Anda mungkin ingin melakukan hal yang sama di komputer lain di mana Anda tidak dapat menginstal alat tambahan untuk alasan apa pun
forquare
Saya belum pernah mendengar tentang itu jotsebelumnya. Terima kasih telah memperluas pengetahuan saya.
tommy.carstensen
9

Anda dapat menginstal coreutils dengan Macports sebagai

sudo port install coreutils

Ini akan menempatkan utilitas inti GNU di / opt / local / bin dengan ag prepended

misalnya gshuf

pengguna151019
sumber
2
Saya menggunakan ini dengan macport, terima kasih. Saya tidak terlalu suka Homebrew
Zorgatone
Jawaban bagus jika Anda memiliki hak sudo. Bukan saya.
tommy.carstensen
@ tommy.carstensen Lalu tanyakan kepada admin Anda - mereka akan menyulitkan Anda untuk melakukan ini karena suatu alasan
user151019
3

Pilihan lain adalah menginstal randomize-linespaket (homebrew), yang memiliki rlperintah yang memiliki fungsi serupa dengan 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
sumber