[linux] Re: wtf... regular expressions in awk...

Kees Theunissen theuniss op rijnh.nl
Ma Sep 26 18:28:35 CEST 2005


On Mon, 26 Sep 2005, Hans Paijmans wrote:

>Volgens mij gebruik ik al minstens tien jaar de regexp
>"if (letter~/[A-Z]/)..." in awk. Werkt opeens niet meer.
>de POSIX kreet "if (letter~/[:upper:]/)..." doet het ook
>niet. Alleen "if (letter~/[ABCDE(enzovoorts)]/) doet het
>nog. Is er vannacht iets gebeurd?

Heb je vannacht iets veranderd in je language settings?
Wat is de waarde van je LC_COLLATE enviroment variable?

Als je de sorteer volgorde hebt staan op iets als AaBbCcDd....
dan zal [A-Z] iets anders doen dan alleen hoofdletters selecteren.
Met LC_COLLATE=C zou het moeten werken zoals je gewend was.
Natuurlijk is het gebruik van [:upper:] beter; dat moet werken
ongeacht de waarde van LC_COLLATE.

Let dan wel even op de syntacs.
De gawk(1) manpage zegt:
       A  character  class  is only valid in a regular expression
       inside  the  brackets  of  a  character  list.   Character
       classes  consist  of [:, a keyword denoting the class, and
       :].  The character classes defined by the  POSIX  standard
       are:
Let op de formulering "... only valid ... inside the brackets of
a character list."
Met andere woorden: probeer het eens met [[:upper:]].


Groeten,

Kees.

-- 
Kees Theunissen
F.O.M.-Instituut voor Plasmafysica "Rijnhuizen", Nieuwegein
E-mail: theuniss op rijnh.nl,     Tel: 030-6096724,     Fax: 030-6031204



More information about the Linux mailing list