unix sorting sur colonne sans séparateur

Je voudrais sortinger un contenu de fichier avec un script Unix en fonction d’une colonne particulière:

ex: sortinge le fichier suivant sur la 3ème colonne:

ax5aa aa3ya fg7ds pp0dd aa1bb 

résulterait comme

 pp0dd aa1bb aa3ya ax5aa fg7ds 

J’ai essayé de sortinger -k 3,3, mais il suffit de sortinger le groupe de mots 3D (séparateur = ESPACE).

Est-il possible de faire en sorte que le sorting sous Unix se comporte comme je le souhaite ou devrais-je utiliser un autre outil?

 $ sort --key=1.3,1.3 inputfile pp0dd aa1bb aa3ya ax5aa fg7ds 

page de manuel de sorting:

[…]

-k, –key = POS1 [, POS2]

lancer une clé sur POS1 (origine 1), la terminer sur POS2 (fin de ligne par défaut)

[…]

POS est F [.C] [OPTS], où F est le numéro du champ et C la position du caractère dans le champ; les deux sont l’origine 1. Si ni -t ni -b n’est actif, les caractères d’un champ sont comptés à partir du début de l’espace précédent. OPTS est une ou plusieurs options de classement à une lettre, qui remplacent les options de classement globales pour cette clé. Si aucune clé n’est donnée, utilisez la ligne entière comme clé.

Avec –key = 1.3,1.3, vous avez dit qu’il n’y avait qu’un seul champ (la ligne entière) et que vous compariez la position du troisième caractère de ce champ.

utiliser sed pour créer les colonnes avant le sorting

 $ echo "ax5aa aa3ya fg7ds pp0dd aa1bb" | sed 's/\(.\)/\1 /g' | sort -t ' ' -k3,3 | tr -d ' ' pp0dd aa1bb aa3ya ax5aa fg7ds 
 cat inputfile | perl -npe 's/(.)/ $1/g' | sort -k 3,3 | perl -npe 's/ //g' 

Je voudrais coller directement à perl et définir un comparateur

 echo $content | perl -e 'print sort {substr($a,3,1) cmp substr($b,3,1)} <>;'