GNT sans publicité, site mobile, fonctionnalitées exclusives...

Script de tri de caracteres

Le
Olivier Miakinen
Bonjour,

Je cherche à faire un tri de caractères, c'est-à-dire que par exemple la
chaîne FADBEC donnerait ABCDEF, mais aussi que la chaîne CACBAC
donnerait AABCCC.

Savez-vous s'il existe déjà une commande Unix me permettant de le faire,
ou bien auriez-vous une idée pour la construire simplement à partir des
outils standards (sed, awk, perl, etc.) ?

Pour info, tous les caractères sont en ASCII 7 bits, et un tri sur la
valeur des octets conviendrait parfaitement (pas besoin de faire un
traitement particulier sur la distinction majuscules/minuscules par
exemple).

Cordialement,
--
Olivier Miakinen
Lire les 15 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas Richard
Le #22548551
Le 07/09/10 15:41, Olivier Miakinen a écrit :
Savez-vous s'il existe déjà une commande Unix me permettant de le faire,
ou bien auriez-vous une idée pour la construire simplement à partir des
outils standards (sed, awk, perl, etc.) ?



Je propose la mauvaise solution suivante :
echo -n poueto | perl -e "print sort split('',<>)"

Pour info, tous les caractères sont en ASCII 7 bits,



Cela devrait marcher pour cette classe de caractères, mais ça peut péter
à tout instant : je ne sais pas comment, mais c'est sûrement lié à
l'encodage (essaye avec un accent... chez moi ça casse)

Good luck

N.
Olivier Miakinen
Le #22548541
Le 07/09/2010 16:34, Nicolas Richard a écrit :

Je propose la mauvaise



;-)

solution suivante :
echo -n poueto | perl -e "print sort split('',<>)"



Ça fonctionne sur un mot, oui. Je vais essayer de comprendre comment ça
marche (moi qui ne connais toujours pas le perl) pour l'adapter à des
fichiers de plusieurs lignes.

Pour info, tous les caractères sont en ASCII 7 bits,



Cela devrait marcher pour cette classe de caractères, mais ça peut péter
à tout instant : je ne sais pas comment, mais c'est sûrement lié à
l'encodage (essaye avec un accent... chez moi ça casse)



Probablement parce que tu as un encodage multibyte, très certainement
UTF-8. Si le tri se fait sur les octets au lieu des caractères, c'est
normal que ça casse.

Heureusement pour moi je ne suis pas dans ce cas.

Merci !
xavier
Le #22548781
Olivier Miakinen
s/n$//;



Pour faire ça, il y a une instruction : chomp()

--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Nicolas George
Le #22548851
Matthieu M , dans le message
écrit :
perl -ne 'chomp; print sort split(//); print "n"'



perl -ne 'chomp; print sort split(//), "n"'
Paul Gaborit
Le #22548881
À (at) 07 Sep 2010 17:30:44 GMT,
Nicolas George
Matthieu M , dans le message
écrit :
perl -ne 'chomp; print sort split(//); print "n"'



perl -ne 'chomp; print sort split(//), "n"'



perl -lane 'print sort split //'

--
Paul Gaborit -
Publicité
Suivre les réponses
Poster une réponse
Anonyme