Bonjour,
Après quelques heures de galère, j'ai réussi à mettre au point une commande 'simple' permettant l'extraction de la fin d'une chaine.
Comme je ne suis pas content du résultat, je soumet mon problème aux nombreux experts qui surfent sur ce forum.
La problèmatique
En entrée est fourni une chaine de caractère ayant un format indéterminé mais dont la fin contient, sur plusieurs digits séparés par des points, un numéro de version qui est l'objet de ma recherche. Les origines de ces données étant aussi diverses que leurs formats il est donc impossible de les contraindre.
Exemples
CRD_code_decode_02.3.12
CRD_data_4.0.2
AD3_pricer_1.3.5
AD3-list.5.4.6
CRD5.7
L'objectif
Obtenir en sortie le numéro complet situé en fin de chaîne.
Sachant que je me suis fixé comme contrainte que cette extraction soit faite par une commande batch sous unix la plus compact possible.
Ma proposition
Explication, un premier sed ajoute un séparateur juste devant le numéro de version, le deuxième sélectionne tout ce qui suit le caractère ajouté à l'étape précédente et l'affiche.echo CRD_code_decode_02.3.12 | sed -n 's/\([0-9\.]*\)$/*\1/p' | sed -n 's/[^\*]*\*\.*\(.*\)$/\1/p'
Pensez vous qu'il est possible de simplifier cette ligne ?
Merci pour vos avis
Partager