sed détection d'une chaine et MAC
Bonjour,
Je dois au sein d'une chaine détecter une occurrence en fonction d'un masque de référence.
La chaine doit etre composé du mot "LOT" ou du symbole "#' suivi d'une serie de chiffres au nombre de 1 à 4, suivi d'une lettre optionnel. Enfin une autre serie de chiffre optionnel au format monétique suivi d'un symbole "€", elle aussi optionnel.
Quelques exemples concrets :
Code:
1 2 3 4 5 6 7
| #123
LOT123
LOT 123
#123A
LOT 123 A
LOT 123 A 4.000.000
# 123 A 4.000.000 |
Si l'un de ces format de chaine est détecter, je dois extraire le N° de LOT avec la lettre si elle existe (123A pour l'exemple)
J'ai du le faire dans un premier temps sous linux ou, avec de l'aide, je suis arrivé à ceci :
Code:
1 2
| res="LOT 123a 4.000"
res1=$(echo $res | sed -r 's/((#|lot|Lot|LOT|LQT)?(\s|\s+)?([0-9]{1,3})[\s|\s+]?([a-zA-Z]?))((|EUR|EURO)?(\s|\s+)?([0-9\.]+).*)?/\4\5|\9/;s/\.//g' | tr [a-z] [A-Z]) |
L'option -r n'existant pas sous Mac (d'après ce que j'ai lu) j'ai remplacé par -E. Mais j'obtiens des résultats totalement incohérent...
J'ai bien conscience que ma ligne n'est pas hyper optimisé, mais il faut bien garder à l'esprit que la chaine d'où je dois extraire le N° de lot doit absolument avoir une composition strict, histoire de ne pas extraire n'importe quel chiffres...
J'ai donc besoin d'aide...
Par avance merci