Cài đặt shuf trên OS X?


49

Ubuntu Linux có một công cụ tuyệt vời gọi là shuf, hoạt động giống như đầu ngoại trừ việc nó cung cấp cho bạn mười dòng ngẫu nhiên. Tôi không thể tìm thấy nó trên Homebrew. Cách đơn giản nhất để cài đặt nó trên OS X là gì?


2
Đây là một phần của gói tiện ích văn bản gnu. Có vẻ là một phần của coreutils, nhưng tôi không biết làm thế nào các công cụ được đóng gói trên homebrew.
jl8e

Câu trả lời:


78

Bạn có thể cài đặt coreutils với brew install coreutils.

shufsẽ được liên kết như gshuf. Đọc các cảnh báo khi bạn cài đặt coreutils.


2
Thông báo trước có vẻ là bạn không nên sử dụng tên riêng của công cụ, nhưng tiền tố chúng bằng g (như "gshuf"), phải không?
Mèo Unun

2
Đúng, hoặc tùy chọn cấu hình PATH của bạn để bạn có được những gì bạn mong đợi.
Jay Thompson

3
brew install coreutilscài đặt các tiện ích với tiền tố gtheo mặc định trên osx, vì vậy bạn có thể cài đặt nó bằng lệnh trên.
Brad

13

Tuy nhiên, một giải pháp khác là tìm hiểu về các công cụ được cung cấp bởi nhà cung cấp. Chắc chắn bạn có thể chuỗi jot, paste, sort, cut, headvà nhận được kết quả tương tự.

jot -r "$(wc -l FILE)" 1 |
paste - FILE |
sort -n |
cut -f 2- |
head -n 10
  • jot tạo số ngẫu nhiên từ 1 đến số dòng trong TẬP_TIN cho mỗi dòng
  • dán dán số ngẫu nhiên cho mỗi dòng trong TẬP_TIN
  • sắp xếp số lượng từng dòng
  • cắt bỏ số ngẫu nhiên từ mỗi dòng
  • đầu ra 10 dòng đầu tiên

2
Tôi thực sự thích bản chất của câu trả lời này, bạn không bao giờ biết khi nào bạn có thể muốn làm điều tương tự trên một máy khác, nơi bạn không thể cài đặt các công cụ bổ sung vì bất kỳ lý do gì
ví dụ 7/8/2015

Tôi chưa bao giờ nghe nói về jottrước đây. Cảm ơn đã mở rộng kiến ​​thức của tôi.
tommy.carstensen 7/2/18

9

Bạn có thể cài đặt coreutils với Macports như

sudo port install coreutils

Điều này sẽ đặt các tiện ích lõi GNU trong / opt / local / bin với ag được chuẩn bị trước

ví dụ gshuf


2
Tôi đã sử dụng cái này với macports, cảm ơn. Tôi không thích Homebrew nhiều
Zorgatone 7/8/2015

Câu trả lời tuyệt vời nếu bạn có quyền sudo. Tôi không.
tommy.carstensen 7/2/18

@ tommy.carstensen Sau đó, hãy hỏi quản trị viên của bạn - họ sẽ gây khó khăn cho bạn khi làm điều này vì một lý do
user151019

3

Một tùy chọn khác là cài đặt randomize-linesgói (homebrew), có rllệnh có chức năng tương tự như 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.