Unter OS X shuf installieren?

49

Ubuntu Linux hat ein großartiges Tool namens shuf, das wie head funktioniert, nur dass es zehn zufällige Zeilen enthält. Ich konnte es nicht auf Homebrew finden. Was ist die einfachste Möglichkeit, es unter OS X zu installieren?

Die lustlose Katze
quelle
2
Es ist Teil des gnu text utilities Pakets. Scheint ein Teil von coreutils zu sein, aber ich weiß nicht, wie das Zeug auf Homebrew verpackt ist.
jl8e

Antworten:

78

Sie können coreutils mit installieren brew install coreutils.

shufwird verlinkt als gshuf. Lesen Sie die Vorsichtsmaßnahmen, wenn Sie coreutils installieren.

Jay Thompson
quelle
2
Die Einschränkung scheint nur zu sein, dass Sie die Eigennamen der Werkzeuge nicht verwenden sollten, sondern ihnen g voranstellen (wie "gshuf"), oder?
The Unfun Cat
2
Ja, oder konfigurieren Sie optional Ihren PFAD, damit Sie das bekommen, was Sie erwarten.
Jay Thompson
3
brew install coreutilsinstalliert die utils gstandardmäßig mit dem präfix auf osx, so dass sie mit dem obigen befehl installiert werden können.
Brad Parks
13

Eine weitere Lösung besteht darin, sich über die vom Anbieter gelieferten Tools zu informieren. Sicherlich könnte man Kette jot, paste, sort, cut, headund erhält die gleichen Ergebnisse.

jot -r "$(wc -l FILE)" 1 |
paste - FILE |
sort -n |
cut -f 2- |
head -n 10
  • jot erzeugt für jede Zeile eine Zufallszahl von 1 bis zur Anzahl der Zeilen in FILE
  • Einfügen fügt die Zufallszahl in jede Zeile in DATEI ein
  • sortieren sortiert jede Zeile numerisch
  • Ausschneiden entfernt die Zufallszahl aus jeder Zeile
  • head gibt die ersten 10 Zeilen aus
fd0
quelle
2
Ich mag die Essenz dieser Antwort wirklich, Sie wissen nie, wann Sie dasselbe auf einem anderen Computer tun möchten, auf dem Sie aus irgendeinem Grund keine zusätzlichen Tools installieren können
forquare
Ich hatte noch nie davon gehört jot. Vielen Dank für die Erweiterung meines Wissens.
tommy.carstensen
9

Sie können coreutils mit Macports als installieren

sudo port install coreutils

Dadurch werden GNU-Kern-Utils mit vorangestelltem ag in / opt / local / bin abgelegt

z.B gshuf

user151019
quelle
2
Ich habe diesen mit Macports benutzt, danke. Ich mag Homebrew nicht sehr
Zorgatone
Gute Antwort, wenn Sie Sudo-Rechte haben. Ich nicht.
tommy.carstensen
@ tommy.carstensen Dann fragen Sie Ihren Administrator - er wird es Ihnen aus einem bestimmten Grund schwer gemacht haben
user151019
3

Eine andere Option ist die Installation eines randomize-lines(Homebrew-) Pakets mit einem rlBefehl, der eine ähnliche Funktionalität wie shuf hat.

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
quelle