mathias dufresne <mathias.dufre...@gmail.com> writes:

> Bonjour à tous,
>
> D'abord veuillez excuser cette question qui n'est pas du tout pure Debian...
>
> Je cherche à définir une regex pour "matcher" des numéros de version avec awk.
>
> Soit le fichier de test contenant :
> 3
> 3.
> 3.4
> 3.4.5
> 3.44.55
> 3.44.5.66
> 3.(4.5).6
>
> Le résultat voulu :
> 3
> 3.4
> 3.4.5
> 3.44.55
> 3.44.5.66

awk '/^[0-9]+(\.[0-9]+)*$/' versions_file

(pas besoin de cat)

> Le test :
> cat versions_file | awk '{ if ( $1 ~ /^[0-9]+[\.[0-9]+]*$/) print $1 }'
>
> donne:
> 3.
> 3.4
> 3.4.5
> 3.44.55
> 3.44.5.66

Ton utilisation des [ est incorrecte ou plutôt ne correspond pas à ce
que tu veux faire. [ et ( ont des utilités différentes qui sont très
bien expliquées dans tout papier traitant des regexs.

Une autre façon d'écrire ça serait :

awk '$1 ~ /^[0-9]+(\.[0-9]+)*$/ { print $1 }' versions_file

Inutile car le résultat ne changera pas mais ça ressemble déjà plus à
du awk (dont la logique est " PATTERN { ACTION } " ).

--
Jérémie Courrèges-Anglas - GPG key : 06A11494

Attachment: pgp3Gv2gmoYFh.pgp
Description: PGP signature

Répondre à