Méthode Simple pour mélanger les éléments d'un tableau dans le shell BASH?
Je peux le faire en PHP, mais j'essaie de travailler dans le shell BASH. J'ai besoin de prendre un tableau et ensuite de façon aléatoire lecture aléatoire du contenu et de la sauvegarde que pour somefile.txt
.
Donc, compte tenu de la matrice de Heresmyarray, des éléments a;b;c;d;e;f;
il serait de produire un fichier de sortie, output.txt
, qui contiendrait des éléments f;c;b;a;e;d;
Éléments de la nécessité de conserver le point-virgule séparateur. J'ai vu un certain nombre de shell bash opérations de matrice, mais rien qui semble proche de ce concept simple. Merci pour toute aide ou suggestion!
OriginalL'auteur Dave | 2011-04-04
Vous devez vous connecter pour publier un commentaire.
Si vous voulez juste de les mettre dans un fichier (utiliser la redirection > )
Si vous voulez mettre les éléments dans le tableau
Si vos données ont
&#abcde;
c'est presque ça -- j'ai besoin de les modifier légèrement pour qu'il fonctionne, idéalement, sur les valeurs, qui pourrait être plus long...surtout des choses comme "𒍅" ou "ꯍ" La clé, c'est que la longueur de l'élément peut varier -- il pourrait avoir aussi peu que 6 caractères avant le point-virgule ou un maximum de 8. Quand je lance le dessus sur l'échantillon de test se termine avec beaucoup de vals &#x&#xષ, ce qui signifie que quelque chose ne va pas quelque part.
ce sont l'exemple des chaînes de vous testé?
Je pense que vous avez été écrit pendant que j'écrivais, le dernier exemple ci-dessus a été magique...fonctionne parfaitement. Je souhaite que j'en savais plus sur sed -- semble un outil incroyablement utile! Merci beaucoup!
OriginalL'auteur kurumi
Accepté la réponse ne correspond pas au titre de la question trop bien, bien que les détails dans la question sont un peu ambigus. La question porte sur la façon de mélanger des éléments d'un tableau en BASH, et kurumi réponse montre une manière de manipuler le contenu d'une chaîne de caractères.
kurumi néanmoins fait bon usage de la "shuf " commande", tandis que siegeX montre comment travailler avec un tableau.
Mettre les deux ensemble donne une réelle "méthode simple pour mélanger les éléments d'un tableau dans le shell BASH":
Le
shuf
de commande utilise des espaces comme un délimiteur il en sera de briser les éléments du tableau qui ont des espaces à l'.OriginalL'auteur David McKinley
De la BashFaq
De sortie
de nouveau mis à jour pour refléter votre tableau d'origine contenu et la sortie vers un fichier. Pur Bash aurez beaucoup plus de performances que d'appeler un grand nombre de fichiers binaires externes dans un pipeline
D'accord! Cela fait beaucoup plus de sens maintenant, et je suis sûr que vous avez raison sur les problèmes de performances, bien que dans mon cas, on ne parle pas énorme. Merci beaucoup. J'étais en quelque sorte en essayant d'utiliser "shuffle" comme on le ferait en Javascript -- en lui passant un tableau. Mais en voyant qu'il est utilisé dans ce contexte un sens! Merci!!!!
printf "%s" "${tableau[@]]}" a un supplément ], à droite?
oui, c'est fait, bonne prise. Je l'ai enlevé. RE: performance, il n'est jamais trop tard pour commencer à pratiquer de bonnes techniques. Aussi, lorsque vous revenez à présent code, un jour, vous êtes moins susceptibles de dire WTF est ce code? vs les solutions de rechange =)
OriginalL'auteur SiegeX