J'ai une commande qui réalise un certain nombre de lignes à stdout: Comment extraire une entrée aléatoire à partir de ceci, dans une doublure (de préférence sans awk) pour que je puisse Il suffit d'utiliser dans un tuyau: p> merci! p> p> p>
6 Réponses :
listall | shuf | head -n 1
Excellent, exactement ce dont j'avais besoin (je ne savais pas à propos de Shuf) - merci!
effectivement "listall | shuf -n 1" semble assez
Utilisation de Perl: p>
perl -mlist :: util = shuffle -e'print ((shuffle <>) [0]) ' code> p> p> p> P> P>
perl -e'print $ listall [$ clé = int rand (@listall = <>)] ' code> p> p> p> p> P>
ul>
Merci. Bien que plus complexe que d'utiliser SHUF, cela pourrait être utile de temps utile.
Ceci est la mémoire en sécurité, contrairement à l'utilisation de Shuf ou de liste :: Util shuffle: p>
Cela importerait que si ListaLall pouvait renvoyer un résultat énorme. P>
Pour plus d'informations, voir l'entrée DADS sur échantillonnage du réservoir . p> listAll | awk 'begin {srand ()} int (rand () * nr) == 0 {x = $ 0} fin {imprimé x}' code> p> p>
Bon à savoir, merci! Ce n'est pas une préoccupation pour ce cas particulier, mais je n'avais même pas pensé à cette question avant ...
Vous pouvez le faire avec juste bash, sans autres outils autres que "LISTALL"
$ lists=($(listall)) # put to array
$ num=${#lists[@]} # get number of items
$ rand=$((RANDOM%$num)) # generate random number
$ echo ${lists[$rand]}
Enregistrer les éléments suivants en tant que script (aléatoireLLine.sh): et exécutez-le comme p>
Certains se sont plaints de ne pas avoir shuf code> disponible sur leurs installations, alors peut-être que cela est plus accessible: listAll | Trier -r | tête -n 1 code>.
-r code> est "trier au hasard". p>
J'ai peur que -r code> n'est pas disponible sur OS X.