Bonjour,
J'ai un fichier qui contient NB lignes
Je souhaite faire un fichier qui contient les meme lignes mais dans un ordre
aleeatoire , sans qu'il en manque une ni qu'il y en aie une de plus ...
En fait c'est une playlist que je veux "randomizer"
Il y a environ 2.300 ligne a ce fichier .
comment m'en sortir en shell ? j'ai une attirance pour zsh mais je pense que
ça ne reposera pas uniquement sur zsh mais aussi sur awk , sed , wc ...
Je n'ai pas encore commencé mais l'agorithme que je me propose de suivre
est :
- compter le nobre de lignes du fichier avec wc -l -> NB_LN
boucle for ( jusqu'a ce que NB_LN == 0 ( ou 1 ?)
- piocher un nombre aleatoire (comment ?) entre 1 et NB_LN
et lire la ligne correspondant dans le fichier -> CURRENT_LN
- ecrire CURRENT_LN dans le nouveau fichier
- retirer CURRENT_LN de l'ancien fichier
- NB_LN = NB_LN - 1
fin boucle for.
Pour faire une boucle for simple en zsh , j'ai des erreurs avec les { } et
les ; qu'il faut mettre ... et ausi avec les [ ] ... mais ça avance
lentement ... si qqun avait une explication en Français sur l'utilisation
de ces signes je suis preneur :-)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Laurent Wacrenier
Rakotomandimby écrit:
J'ai un fichier qui contient NB lignes Je souhaite faire un fichier qui contient les meme lignes mais dans un ordre aleeatoire , sans qu'il en manque une ni qu'il y en aie une de plus ... En fait c'est une playlist que je veux "randomizer" Il y a environ 2.300 ligne a ce fichier . comment m'en sortir en shell ? j'ai une attirance pour zsh mais je pense que ça ne reposera pas uniquement sur zsh mais aussi sur awk , sed , wc ...
Sous zsh :
< fichier while read line; do echo "$RANDOM:$line"; done | sort | sed 's/^[^:]*://'
Rakotomandimby <mrakotom@free.fr> écrit:
J'ai un fichier qui contient NB lignes
Je souhaite faire un fichier qui contient les meme lignes mais dans un ordre
aleeatoire , sans qu'il en manque une ni qu'il y en aie une de plus ...
En fait c'est une playlist que je veux "randomizer"
Il y a environ 2.300 ligne a ce fichier .
comment m'en sortir en shell ? j'ai une attirance pour zsh mais je pense que
ça ne reposera pas uniquement sur zsh mais aussi sur awk , sed , wc ...
Sous zsh :
< fichier while read line; do echo "$RANDOM:$line"; done |
sort | sed 's/^[^:]*://'
J'ai un fichier qui contient NB lignes Je souhaite faire un fichier qui contient les meme lignes mais dans un ordre aleeatoire , sans qu'il en manque une ni qu'il y en aie une de plus ... En fait c'est une playlist que je veux "randomizer" Il y a environ 2.300 ligne a ce fichier . comment m'en sortir en shell ? j'ai une attirance pour zsh mais je pense que ça ne reposera pas uniquement sur zsh mais aussi sur awk , sed , wc ...
Sous zsh :
< fichier while read line; do echo "$RANDOM:$line"; done | sort | sed 's/^[^:]*://'
Pascal Bourguignon
Rakotomandimby writes:
Bonjour, J'ai un fichier qui contient NB lignes Je souhaite faire un fichier qui contient les meme lignes mais dans un ordre aleeatoire , sans qu'il en manque une ni qu'il y en aie une de plus ... En fait c'est une playlist que je veux "randomizer" Il y a environ 2.300 ligne a ce fichier . comment m'en sortir en shell ? j'ai une attirance pour zsh mais je pense que ça ne reposera pas uniquement sur zsh mais aussi sur awk , sed , wc ...
Je n'ai pas encore commencé mais l'agorithme que je me propose de suivre est :
- compter le nobre de lignes du fichier avec wc -l -> NB_LN boucle for ( jusqu'a ce que NB_LN == 0 ( ou 1 ?) - piocher un nombre aleatoire (comment ?) entre 1 et NB_LN et lire la ligne correspondant dans le fichier -> CURRENT_LN - ecrire CURRENT_LN dans le nouveau fichier - retirer CURRENT_LN de l'ancien fichier - NB_LN = NB_LN - 1 fin boucle for.
Pour faire une boucle for simple en zsh , j'ai des erreurs avec les { } et les ; qu'il faut mettre ... et ausi avec les [ ] ... mais ça avance lentement ... si qqun avait une explication en Français sur l'utilisation de ces signes je suis preneur :-)
Merci d'avance a S.C. et a vous tous .
J'ai une commande random alors:
while read line ; do echo "`random` $line" ; done < fichier | sort -n | sed -e 's/^[0-9][0-9]* //' > aleatoire
Sinon, en bash $RANDOM donne 15 bits; mieux vaut utiliser $RANDOM$RANDOM:
while read line ; do echo "$RANDOM$RANDOM $line" ; done < fichier | sort -n | sed -e 's/^[0-9][0-9]* //' > aleatoire
-- __Pascal_Bourguignon__ http://www.informatimago.com/ Do not adjust your mind, there is a fault in reality. Lying for having sex or lying for making war? Trust US presidents :-(
Rakotomandimby <mrakotom@free.fr> writes:
Bonjour,
J'ai un fichier qui contient NB lignes
Je souhaite faire un fichier qui contient les meme lignes mais dans un ordre
aleeatoire , sans qu'il en manque une ni qu'il y en aie une de plus ...
En fait c'est une playlist que je veux "randomizer"
Il y a environ 2.300 ligne a ce fichier .
comment m'en sortir en shell ? j'ai une attirance pour zsh mais je pense que
ça ne reposera pas uniquement sur zsh mais aussi sur awk , sed , wc ...
Je n'ai pas encore commencé mais l'agorithme que je me propose de suivre
est :
- compter le nobre de lignes du fichier avec wc -l -> NB_LN
boucle for ( jusqu'a ce que NB_LN == 0 ( ou 1 ?)
- piocher un nombre aleatoire (comment ?) entre 1 et NB_LN
et lire la ligne correspondant dans le fichier -> CURRENT_LN
- ecrire CURRENT_LN dans le nouveau fichier
- retirer CURRENT_LN de l'ancien fichier
- NB_LN = NB_LN - 1
fin boucle for.
Pour faire une boucle for simple en zsh , j'ai des erreurs avec les { } et
les ; qu'il faut mettre ... et ausi avec les [ ] ... mais ça avance
lentement ... si qqun avait une explication en Français sur l'utilisation
de ces signes je suis preneur :-)
Merci d'avance a S.C. et a vous tous .
J'ai une commande random alors:
while read line ; do echo "`random` $line" ; done < fichier
| sort -n | sed -e 's/^[0-9][0-9]* //' > aleatoire
Sinon, en bash $RANDOM donne 15 bits; mieux vaut utiliser $RANDOM$RANDOM:
while read line ; do echo "$RANDOM$RANDOM $line" ; done < fichier
| sort -n | sed -e 's/^[0-9][0-9]* //' > aleatoire
--
__Pascal_Bourguignon__
http://www.informatimago.com/
Do not adjust your mind, there is a fault in reality.
Lying for having sex or lying for making war? Trust US presidents :-(
Bonjour, J'ai un fichier qui contient NB lignes Je souhaite faire un fichier qui contient les meme lignes mais dans un ordre aleeatoire , sans qu'il en manque une ni qu'il y en aie une de plus ... En fait c'est une playlist que je veux "randomizer" Il y a environ 2.300 ligne a ce fichier . comment m'en sortir en shell ? j'ai une attirance pour zsh mais je pense que ça ne reposera pas uniquement sur zsh mais aussi sur awk , sed , wc ...
Je n'ai pas encore commencé mais l'agorithme que je me propose de suivre est :
- compter le nobre de lignes du fichier avec wc -l -> NB_LN boucle for ( jusqu'a ce que NB_LN == 0 ( ou 1 ?) - piocher un nombre aleatoire (comment ?) entre 1 et NB_LN et lire la ligne correspondant dans le fichier -> CURRENT_LN - ecrire CURRENT_LN dans le nouveau fichier - retirer CURRENT_LN de l'ancien fichier - NB_LN = NB_LN - 1 fin boucle for.
Pour faire une boucle for simple en zsh , j'ai des erreurs avec les { } et les ; qu'il faut mettre ... et ausi avec les [ ] ... mais ça avance lentement ... si qqun avait une explication en Français sur l'utilisation de ces signes je suis preneur :-)
Merci d'avance a S.C. et a vous tous .
J'ai une commande random alors:
while read line ; do echo "`random` $line" ; done < fichier | sort -n | sed -e 's/^[0-9][0-9]* //' > aleatoire
Sinon, en bash $RANDOM donne 15 bits; mieux vaut utiliser $RANDOM$RANDOM:
while read line ; do echo "$RANDOM$RANDOM $line" ; done < fichier | sort -n | sed -e 's/^[0-9][0-9]* //' > aleatoire
-- __Pascal_Bourguignon__ http://www.informatimago.com/ Do not adjust your mind, there is a fault in reality. Lying for having sex or lying for making war? Trust US presidents :-(
Laurent Wacrenier
Pascal Bourguignon écrit:
Sinon, en bash $RANDOM donne 15 bits; mieux vaut utiliser $RANDOM$RANDOM:
Quel interêt ? Si ce sont des nombres pseudo-aléatoires, dont l'un dépend du précédent, celà réduit la période et ne laisse que 14 bits de liberté.
Et dans le but de désordonner, 15 bits, c'est bien suffisant.
Sinon, en bash $RANDOM donne 15 bits; mieux vaut utiliser $RANDOM$RANDOM:
Quel interêt ? Si ce sont des nombres pseudo-aléatoires, dont l'un dépend du précédent, celà réduit la période et ne laisse que 14 bits de liberté.
Et dans le but de désordonner, 15 bits, c'est bien suffisant.
Pascal Bourguignon
Laurent Wacrenier <lwa@ teaser . fr> writes:
Pascal Bourguignon écrit:
Sinon, en bash $RANDOM donne 15 bits; mieux vaut utiliser $RANDOM$RANDOM:
Quel interêt ? Si ce sont des nombres pseudo-aléatoires, dont l'un dépend du précédent, celà réduit la période et ne laisse que 14 bits de liberté.
Et dans le but de désordonner, 15 bits, c'est bien suffisant.
Ça dépend du nombre de ligne.
Si on a beaucoup plus que 2^15 lignes, (ou pas beaucoup moins), ce qui va se passer, c'est que plusieurs lignes auront le même numéro aléatoire et alors sort va alors ordonner ces groupes de façon non aléatoire.
-- __Pascal_Bourguignon__ http://www.informatimago.com/ Do not adjust your mind, there is a fault in reality. Lying for having sex or lying for making war? Trust US presidents :-(
Sinon, en bash $RANDOM donne 15 bits; mieux vaut utiliser $RANDOM$RANDOM:
Quel interêt ?
Si ce sont des nombres pseudo-aléatoires, dont l'un dépend du précédent,
celà réduit la période et ne laisse que 14 bits de liberté.
Et dans le but de désordonner, 15 bits, c'est bien suffisant.
Ça dépend du nombre de ligne.
Si on a beaucoup plus que 2^15 lignes, (ou pas beaucoup moins), ce qui
va se passer, c'est que plusieurs lignes auront le même numéro
aléatoire et alors sort va alors ordonner ces groupes de façon non
aléatoire.
--
__Pascal_Bourguignon__
http://www.informatimago.com/
Do not adjust your mind, there is a fault in reality.
Lying for having sex or lying for making war? Trust US presidents :-(
Sinon, en bash $RANDOM donne 15 bits; mieux vaut utiliser $RANDOM$RANDOM:
Quel interêt ? Si ce sont des nombres pseudo-aléatoires, dont l'un dépend du précédent, celà réduit la période et ne laisse que 14 bits de liberté.
Et dans le but de désordonner, 15 bits, c'est bien suffisant.
Ça dépend du nombre de ligne.
Si on a beaucoup plus que 2^15 lignes, (ou pas beaucoup moins), ce qui va se passer, c'est que plusieurs lignes auront le même numéro aléatoire et alors sort va alors ordonner ces groupes de façon non aléatoire.
-- __Pascal_Bourguignon__ http://www.informatimago.com/ Do not adjust your mind, there is a fault in reality. Lying for having sex or lying for making war? Trust US presidents :-(
Stephane CHAZELAS
Pour des fichiers pas trop gros, un seul awk suffit:
merci beaucoup pour votre aide . J'ai notè tous vos conseils mais je ne peux pas les appliquer , je n'ai pas la machine sous la main ... grrr je vous tiens au courant. Et merci encore.
Rakotomandimby wrote:
merci beaucoup pour votre aide .
J'ai notè tous vos conseils mais je ne peux pas les appliquer , je n'ai
pas la machine sous la main ... grrr je vous tiens au courant.
Et merci encore.
merci beaucoup pour votre aide . J'ai notè tous vos conseils mais je ne peux pas les appliquer , je n'ai pas la machine sous la main ... grrr je vous tiens au courant. Et merci encore.