Встановити shuf на OS X?


49

У Ubuntu Linux є чудовий інструмент під назвою shuf, який працює як head, за винятком того, що дає десять випадкових ліній. Я не зміг його знайти на Homebrew. Який найпростіший спосіб встановити його на OS X?


2
Це частина пакета текстових утиліт gnu. Здається, вона є частиною основних програм, але я не знаю, як набиваються речі на домашній мові.
jl8e

Відповіді:


78

Ви можете встановити coreutils за допомогою brew install coreutils.

shufбуде пов'язано як gshuf. Читайте застереження під час встановлення coreutils.


2
Застереження здається, що ви не повинні використовувати власні назви інструментів, а приставляти їх до g (наприклад, "gshuf"), правда?
The Unfun Cat

2
Так, або необов’язково налаштуйте свій PATH, щоб ви отримали те, що очікуєте.
Джей Томпсон

3
brew install coreutilsвстановлює утиліти з префіксом gза замовчуванням на osx, тому ви можете встановити його за допомогою вищевказаної команди.
Бред Паркс

13

Ще одне рішення - дізнатися про інструменти, які постачає постачальник. Звичайно , ви могли б ланцюг jot, paste, sort, cut, headі отримати ті ж результати.

jot -r "$(wc -l FILE)" 1 |
paste - FILE |
sort -n |
cut -f 2- |
head -n 10
  • jot створює випадкове число від 1 до кількості рядків у FILE для кожного рядка
  • paste вставляє випадкове число у кожен рядок у FILE
  • сортування сортує числовий кожен рядок
  • вирізання видаляє випадкове число з кожного рядка
  • голова виводить перші 10 рядків

2
Мені дуже подобається суть цієї відповіді, ти ніколи не знаєш, коли ти можеш зробити те ж саме на іншій машині, де ти не можеш з будь-якої причини встановити додаткові інструменти
forquare

Я ніколи про це не чув jot. Дякую за розширення моїх знань.
tommy.carstensen

9

Ви можете встановити coreutils з Macports як

sudo port install coreutils

Це додасть основні утиліти GNU в / opt / local / bin з попередньо доданим ag

е, ж gshuf


2
Я використовував цей з макпортами, дякую. Мені не дуже подобається Homebrew
Zorgatone

Чудова відповідь, якщо у вас є права на судо. Я не.
tommy.carstensen

@ tommy.carstensen Тоді запитайте свого адміністратора - вони змусять вас це зробити важко з причини
користувач151019

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.