ติดตั้ง shuf บน OS X หรือไม่


49

Ubuntu Linux มีเครื่องมือที่ยอดเยี่ยมที่เรียกว่า shuf ซึ่งทำงานเหมือนกับ head ยกเว้นว่าจะให้สิบบรรทัดสุ่ม ฉันหามันไม่พบใน Homebrew วิธีที่ง่ายที่สุดในการติดตั้งบน OS X คืออะไร?


2
มันเป็นส่วนหนึ่งของชุดโปรแกรมอรรถประโยชน์ข้อความ gnu ดูเหมือนว่าจะเป็นส่วนหนึ่งของ coreutils แต่ฉันไม่ทราบว่าสิ่งที่บรรจุอยู่ในโฮมบรูว์
jl8e

คำตอบ:


78

brew install coreutilsคุณสามารถติดตั้งกับ coreutils

shufgshufจะได้รับการเชื่อมโยงเป็น อ่านคำเตือนเมื่อคุณติดตั้ง coreutils


2
ข้อแม้ดูเหมือนว่าคุณไม่ควรใช้ชื่อที่เหมาะสมของเครื่องมือ แต่นำหน้าด้วย g (เช่น "gshuf") ใช่ไหม
Cat Unfun

2
ใช่หรือเลือกกำหนดค่าเส้นทางของคุณเพื่อให้ได้สิ่งที่คุณคาดหวัง
Jay Thompson

3
brew install coreutilsติดตั้ง utils ด้วยส่วนนำหน้าgตามค่าเริ่มต้นบน osx ดังนั้นคุณสามารถติดตั้งได้โดยใช้คำสั่งด้านบน
Brad Parks

13

อีกวิธีคือการเรียนรู้เกี่ยวกับเครื่องมือที่จัดทำโดยผู้ขาย แน่นอนคุณสามารถโซ่jot, paste, sort, cut, headและได้รับผลเช่นเดียวกัน

jot -r "$(wc -l FILE)" 1 |
paste - FILE |
sort -n |
cut -f 2- |
head -n 10
  • jot สร้างตัวเลขสุ่มจาก 1 ถึงจำนวนบรรทัดในไฟล์สำหรับแต่ละบรรทัด
  • วางแปะหมายเลขสุ่มกับแต่ละบรรทัดในไฟล์
  • เรียงลำดับตัวเลขแต่ละบรรทัด
  • ตัดลบตัวเลขสุ่มจากแต่ละบรรทัด
  • หัวเอาท์พุท 10 บรรทัดแรก

2
ฉันชอบแก่นแท้ของคำตอบนี้คุณไม่มีทางรู้ว่าคุณอาจต้องการทำสิ่งเดียวกันในเครื่องอื่นซึ่งคุณไม่สามารถติดตั้งเครื่องมือพิเศษไม่ว่าด้วยเหตุผลใด
forquare

ฉันไม่เคยได้ยินมาjotก่อน ขอบคุณสำหรับการขยายความรู้ของฉัน
tommy.carstensen

9

คุณสามารถติดตั้ง coreutils ด้วย Macports เป็น

sudo port install coreutils

สิ่งนี้จะทำให้ GNU core utils ใน / opt / local / bin พร้อม ag prepended

เช่น gshuf


2
ฉันใช้อันนี้กับ macports ขอบคุณ ฉันไม่ชอบ Homebrew มาก
Zorgatone

คำตอบที่ดีถ้าคุณมีสิทธิ์ sudo ฉันไม่.
tommy.carstensen

@ tommy.carstensen จากนั้นขอให้ผู้ดูแลระบบของคุณ - พวกเขาจะทำให้มันยากสำหรับคุณที่จะทำเช่นนี้ด้วยเหตุผล
user151019

3

อีกทางเลือกหนึ่งคือการติดตั้งrandomize-linesแพคเกจ (homebrew) ซึ่งมีrlคำสั่งที่มีฟังก์ชั่นที่คล้ายกับ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.