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
pgp3Gv2gmoYFh.pgp
Description: PGP signature