Setara dengan gnu `sort -R` di OSX?


37

sortUtilitas teks GNU memiliki -Ropsi non-standar untuk mengacak jalur input.

OSX sorttidak memiliki ekstensi ini. Apakah ada fungsi serupa yang tersedia di filter teks lain?

Jawaban:


50

Jika mau, Anda dapat menginstal GNU sortmelalui paket coreutils GNU melalui Homebrew , yang merupakan manajer paket untuk OS X.

Menjalankan ini akan menginstal Homebrew.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Kemudian ikuti saja petunjuk instalasi. Saat Homebrew diinstal, jalankan

brew install coreutils

Ini akan menginstal semacam GNU gsort, sehingga Anda dapat menggunakannya seperti sortdi Linux GNU mana pun.


Atau, lihat pertanyaan Stack Overflow ini, yang menyebutkan beberapa metode:

Bagaimana saya bisa mengacak baris dalam file menggunakan alat standar di Redhat Linux
Bagaimana saya bisa mengocok garis file teks di baris perintah Unix?

Atau lihat halaman commandlinefu.com ini:

Mengacak garis (kebalikan dari | sort)


Opsi homebrew berfungsi, seperti halnya konstruksi awk atau perl yang terkait (meskipun saya bayangkan mereka lebih lambat.) Sisanya tidak dapat digunakan, karena hanya GNU-saja.
phs

7

Pada OS X, jika Anda tidak ingin menginstal homebrew (tetapi Anda memang harus melakukannya), Anda dapat menggunakan perlatau ruby:

perl -MList::Util -e 'print List::Util::shuffle <>'

atau

ruby -e 'puts STDIN.readlines.shuffle'

0

Gunakan shufatau sortdari coreutilspaket, tetapi kemudian Anda harus menambahkan /usr/local/binke PATHdalam ~/.bashrcfile Anda, misalnya:

export PATH=/usr/local/sbin:/usr/local/bin:$PATH

Atau Anda dapat mencoba ex:

ex -s +"%s/^/\=reltimestr(reltime())[-2:].' '" +"sort n" +"%s/^\S* //" +%p -cq! /dev/stdin

Sumber: Cara mengocok daftar di vim?


0

Anda dapat menginstal rlperintah melalui homebrew ( brew install randomize-lines).

Ini cukup cepat dan memiliki opsi untuk membatasi jumlah item yang dikembalikan, serta menentukan pembatas (spasi alih-alih umpan baris, misalnya).

(Lihat juga https://stackoverflow.com/a/42056195/43615 .)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.