Bonjour, en entrée, j'ai une chaine de la forme « YYYXX » et je voudrais écrire une fonction bash qui me la transforme en « XX-YYY » où XX est du texte de longueur variable (typiquement entre 1 et 3 caractères) et pouvant prendre n'importe quelle lettre ASCII (majuscule ou minuscule) et YYY est un nombre de taille variable pouvant aller de 1 à 999.
Par exemple, je voudrais transformer « 252Cf » et « Cf-252 ».
Je n'ai aucune idée de l'outil qui permet de faire cela. Merci d'avance pour votre aide.
# sed, awk et leurs amis
Posté par NeoX . Évalué à 5.
au pif je dirais qu'il faut deja rechercher l'expression reguliere chiffre 1 à 999, peux-tu avoir un modele 1Cf ou bien c'est 001Cf ?
puis l'expression reguliere pour les 1 à 3 lettres qui suivent.
ensuite sed doit permettre de rechercher/remplacer
sed -e 's/(motif1)(motif2)/\2-\1/g'
d'autres outils peuvent faire la meme chose
# Solution
Posté par pamputt . Évalué à 2.
J'imagine que ce n'est pas ce qu'il y a de plus élégant mais voici la fonction que j'ai écrite
# alors
Posté par cho7 (site web personnel) . Évalué à 3.
En quelques lignes (qu'on peut fusionner mais j'ai voulu ça un minimum didactique), ça donne ça :
et tu obtiens bien cf-123
# man bash : remplacement des paramètres
Posté par zipe31 . Évalué à 7. Dernière modification le 28 juin 2018 à 08:22.
Salut,
;-)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.