Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
commande pour melanger une liste
Envoyé par: totor

Bonjour,

je cherche une commande qui me permettrait de melanger une liste

ex : j'ai mon fichier toto

titre1
titre2
titre3
.....

et je voudrais donc le melanger (aleatoirement) pour me retrouver avec une liste non triée,...
note : j'ai deja fait ca avec des commandes vi mais je voudrai
une commande en direct.. enfin s'il en existe une

voila merci

Poste le Wednesday 12 September 2007 18:27:32
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: oudoubah

sort -R fichier

man sort pour plus d'informations

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Wednesday 12 September 2007 20:04:43
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: totor

slt

merci mais l'option -R n'existe pas chez moi !!!

suis sous debian
une info sur sort me donne :
sort (coreutils) 5.2.1

@+

Poste le Wednesday 12 September 2007 20:51:59
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: oudoubah

$ sort --version
sort (GNU coreutils) 6.9

Sinon, il faut bricoler pour le faire :

nblignes=$(wc -l fichier)
> fichier_random
while [ $nblignes -gt 0 ] ; do
  num=$(( $RANDOM % $nblignes))
  head -n $num $fichier | tail -1 >> fichier_random
  sed -i "${num}d/" fichier
done

à tester

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Wednesday 12 September 2007 22:51:56
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: tg(y)

oudoubah, il vient d'où, ton programme sort ?

Poste le Wednesday 12 September 2007 23:21:24
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: diancech

Citation
tg(y)
oudoubah, il vient d'où, ton programme sort ?

Je ne sais pas d'où vient son "sort", mais j'ai le même que lui. Donc ce ne doit pas être un "sort" qui a muté. :-)) ^^D-*



--------------------------------------------------------------------------------------------------------------------------------------------------
Exige beaucoup de toi-même et attends peu des autres. Ainsi beaucoup d'ennuis te seront épargnés. Confucius

Poste le Wednesday 12 September 2007 23:44:55
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: oudoubah

Citation
tg(y)
oudoubah, il vient d'où, ton programme sort ?

C'est gnu sort, version 6.2.9 (de memoire)

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Thursday 13 September 2007 09:10:17
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: oudoubah

Citation
tg(y)
oudoubah, il vient d'où, ton programme sort ?

Bon, il me semble que j'ai répondu à côté de la plaque #%b

Mon sort est celui par défaut des corutils d'archlinux

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Thursday 13 September 2007 09:30:57
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: Raph__

Salut,

Citation
oudoubah
nblignes=$(wc -l fichier)
> fichier_random
while [ $nblignes -gt 0 ] ; do
num=$(( $RANDOM % $nblignes))
head -n $num $fichier | tail -1 >> fichier_random
sed -i "${num}d/" fichier
done

Cela ne fonctionnera pas. Rien ne garanti que toutes les lignes seront lues et le risque de doublon est élevé.

Poste le Thursday 13 September 2007 14:07:46
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: oudoubah

La version corrigée :

nblignes=$(wc -l fichier | cut -d' ' -f 1)
> fichier_random
while [ $nblignes -gt 0 ] ; do
        num=$(( $RANDOM % $nblignes + 1))
        head -n $num fichier | tail -1 >> fichier_random
        sed -i -e "${num}d\
" fichier
        nblignes=$(($nblignes - 1))
done

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Thursday 13 September 2007 14:20:40
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: totor

slt

bon il semblerait qu'il n'y ait pas de commande,
je vais quand meme jeter a oeil a cette version 6.9
sinon merci pour le script, j'en avais fait un a base de vi et sed
mais celui la est pas mal non plus

@+

Poste le Thursday 13 September 2007 17:25:56
Répondre     Citer    
Re: commande pour melanger une liste
Envoyé par: totor

re

apres un bref instant, et une petite installation de la version 6.9
je confirme en effet que l'on trouve l'option -R de sort
qui permet de melanger les lignes

merci a tous:-)

Poste le Thursday 13 September 2007 17:37:27
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
commande pour melanger une liste
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons