L'expression elle-même fonctionne pour moi:
dfs:~# gawk --posix '/^[A-Z]{2,4}$/ {print "Yes"}'
AAAA
Yes
AA
Yes
TT
Yes
tt
YY
Yes
yy
Vos problèmes peuvent être causés par deux choses. Soit vous avez accidentellement mis la variable IGNORECASE
awk ou sinon case insensitive operation (BTW IGNORECASE
ne fonctionne pas avec --posix
, mais avec --re-interval
, qui active aussi les accolades dans les expressions régulières), ou c'est un problème classique de la séquence d'assemblage des paramètres régionaux (parce que gawk effectue une comparaison de caractères en fonction des paramètres régionaux), ce qui signifie que les caractères en minuscules se comparent entre certains caractères majuscules. Citation du relevant part of the manual:
De nombreux endroits trier caractères dans ordre de dictionnaire, et dans ces lieux , « [a-dx-z] » est généralement pas équivalent à « [abcdxyz] »; à la place, pourrait être équivalent à '[aBbCcDdxXyYz]', par exemple. Pour obtenir l'interprétation traditionnelle d'expressions de parenthèse, vous pouvez utiliser l'environnement local C en définissant la variable d'environnement LC_ALL à la valeur 'C'.
Montrez-nous l'intégralité du script ou de la commande AWK. Je pense que je sais ce qui se passe, mais vous n'avez pas fourni suffisamment d'informations pour être sûr. – paxdiablo