#1 Le 20/08/2021, à 18:39
- arnoxz
[Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
Bonjour,
J'aimerais savoir s'il existe une commande qui permet d'extraire un mot au hasard d'une liste de mots (d'un fichier séparé par exemple, et comment ce fichier doit-il être construit (virgule, double-point, point-virgule, quote,... pour les séparer ?), je suis tombé sur 'random' cependant je pense que cette commande n'est valable que pour les chiffres (integer et pas une liste définie) ?
Merci de votre aide.
Dernière modification par arnoxz (Le 29/08/2021, à 00:27)
Hors ligne
#2 Le 20/08/2021, à 18:51
- cracolinux
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
Le contenu de ton fichier texte zoukmachine.txt:
toto
tutu
rambo
raoult
sort -R zoukmachine.txt | head -n 1
Va te trier au pif le fichier et te sortir la première ligne
Hors ligne
#3 Le 20/08/2021, à 19:03
- Watael
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
une liste de mots
comment est constituée cette liste ?
Dernière modification par Watael (Le 20/08/2021, à 19:03)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#4 Le 20/08/2021, à 19:42
- arnoxz
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
Le contenu de ton fichier texte zoukmachine.txt:
....
ça marche ok merci
Hors ligne
#5 Le 20/08/2021, à 19:45
- arnoxz
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
comment est constituée cette liste ?
elle n'est pas encore constituée et doit être adaptée....
j'ai fait ceci sous python, mais j'aurais préféré l'avoir sous la main dans une fenêtre "linux" / bash
#!/usr/bin/python
import random
stop = 0
while stop != 1:
liste = ['Albert', 'Jean', 'Robert', 'Annie', 'Spirou', 'Toto', 'Marc']
print (" --------------------------")
print ("| Le gagnant est:", random.choice(liste), "|")
print (" --------------------------")
myinput = input("Veux-tu relancer la loterie? 'Entrée' pour oui, 'n\'importe quelle autre touche' pour arrêter:",)
if myinput == "":
print (":")
pass
else:
break
Mais l'idéal aurait été de pouvoir gérer une liste externe, soit en format txt, ou autre afin de n'éditer que le fichier d'utilisateur / des noms, plutot que tout le code....
la solution de cracolinux se rapproche bien de ma recherche
Hors ligne
#6 Le 20/08/2021, à 19:57
- pingouinux
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
Bonsoir,
$ cat fichier
ligne 1
ligne 2
ligne 3
ligne 4
ligne 5
$ shuf -n1 fichier
ligne 5
$ shuf -n1 fichier
ligne 4
Hors ligne
#7 Le 20/08/2021, à 20:02
- arnoxz
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
Bonsoir,
merci je note shuf (je n'avais jamais entendu avant :-) )
Hors ligne
#8 Le 20/08/2021, à 20:17
- Watael
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
elle n'est pas encore constituée et doit être adaptée....
donc, pour l'instant, on donne des solutions qui pourraient finalement ne pas être retenues.
donc, on travaille dans le vide, pour rien.
Dernière modification par Watael (Le 20/08/2021, à 22:15)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#9 Le 20/08/2021, à 21:47
- cracolinux
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
Merci pour la découverte de shuf pingouinux
Hors ligne
#10 Le 20/08/2021, à 22:20
- arnoxz
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
Encore une question, pour sort ou shuf, comment éviter de considérer la ligne 1 du fichier texte ou de commenter une ligne qui ne sera pas considérée ? J'avais commencé les lignes à commenter par #!, mais ces lignes sortent parfois (mes 2 premières lignes sont des commentaires qui ne doivent pas être pris en compte) ?!
Alors soit il existe une option pour "commenter" ou une option pour ne pas considérer certaines lignes ?
--> REM - testé ne fonctionne pas
--> /// - testé ne fonctionne pas non plus
Mercii
[EDIT] : je lis que le manuel de sort mentionne également
SEE ALSO
shuf(1), uniq(1)
Dernière modification par arnoxz (Le 20/08/2021, à 22:30)
Hors ligne
#11 Le 20/08/2021, à 22:50
- MicP
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
Bonjour
… J'avais commencé les lignes à commenter par #!, …
Pour éviter les problèmes éventuels à venir,
il vaudrait mieux choisir une autre suite de caractère que #!
car cette suite de caractères, dans la première ligne d'un fichier,
pourrait un jour être interprétée comme un shebang
Hors ligne
#12 Le 20/08/2021, à 23:19
- cracolinux
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
Le contenu de ton fichier texte zoukmachine.txt:
toto
tutu
#rambo
#raoult
#zog
grep -v \# zoukmachine.txt | sort -R | head -n 1
Hors ligne
#13 Le 20/08/2021, à 23:40
- arnoxz
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
MicP : aouch merci pour le rappel, en effet, confusion entre les langages python, c+, basic (vieux), cobol, fortran, java, html, php,.... (que je maitrise peu mais dans lesquels je dépatouille avec leur manière propres de commenter, le cerveau perd le contrôle), grâce à ce rappel, c'est gravé à jamais :-)
cracolinux : merci, impec :-) je vais pouvoir maintenant faire une loterie avec éthique parmi mon groupe de passionnés pour le tirage au sort des premiers prix :-)
Hors ligne
#14 Le 21/08/2021, à 06:33
- pingouinux
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
Si tu veux juste sauter la première ligne (commencer à partir de la deuxième) :
tail -n +2 fichier | shuf -n1
Hors ligne
#15 Le 21/08/2021, à 19:57
- arnoxz
Re : [Réso]Extrait aléatoire d'une chaine de caractère en bash ? (Random ?)
pingouinlinux : taupe top :-) - merci
Hors ligne