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>