Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 02 Aug 2012 13:20:52 +0200
From:      kaltheat <kaltheat@googlemail.com>
To:        <freebsd-questions@freebsd.org>
Subject:   buggy awk regex handling?
Message-ID:  <743721353.9443.1343906452119.JavaMail.sas1@172.29.249.242>

next in thread | raw e-mail | index | archive | help


Hi,

I tried to replace three letters with three letters by awk using the sub-routine.
I assumed that my regular expression does mean the following:

match if three letters of any letter of alphabet occurs anywhere in input

$ echo AbC | awk '{sub(/[[:alpha:]]{3}/,"cBa"); print;}'
AbC

As you can see the result was unexpected.
When I try doing it for at least one letter, it works:

$ echo AbC | awk '{sub(/[[:alpha:]]+/,"cBa"); print;}'
cBa

Same problem without macro:

$ echo AbC | awk '{sub(/[A-Za-z]{3}/,"cBa"); print;}'
AbC

$ echo AbC | awk '{sub(/[A-Za-z]+/,"cBa"); print;}'
cBa

I thought that it might have something to do with the curly braces. But escaping
them doesn't do the trick.

What am I doing wrong?
Or is awk buggy?

Regards,
kaltheat




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?743721353.9443.1343906452119.JavaMail.sas1>