Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Aug 2017 10:36:36 +0900
From:      Tomoya Tabuchi <t@tomoyat1.com>
To:        freebsd-current@freebsd.org
Subject:   Re: BSD awk bug ?
Message-ID:  <20170816013634.GA8152@tomoyat1.com>
In-Reply-To: <201708160114.v7G1EkxS079546@kx.openedu.org>
References:  <201708160114.v7G1EkxS079546@kx.openedu.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Aug 16, 2017 at 10:14:46AM +0900, KIRIYAMA Kazuhiko wrote:
> admin@tbedfpc:~/tmp % ll
> total 12
> -rw-r--r--  1 admin  admin  235 Aug 16 10:01 regex-1.sh
> -rw-r--r--  1 admin  admin  236 Aug 16 10:01 regex-2.sh
> -rw-r--r--  1 admin  admin  260 Aug 16 10:01 regex.sh
> admin@tbedfpc:~/tmp % cat regex.sh 
> #!/bin/sh
> 
> data='1 2 3 4 5 6
> 1 2 3 4 5
> 1 2 3 4 5 6
> 1 2 3 4 5 6
> 1 2 3 4
> 1 2 3'
> 
> IFS=$'\n'
> for datum in $data; do
>     if echo "$datum" | egrep -q  '^([^[:space:]]+[[:space:]]+){5}'; then
>         echo "$datum"
>     else
>         echo "Not 6 components! : \"$datum\""
>     fi
> done
> admin@tbedfpc:~/tmp % sh ./regex.sh 
> 1 2 3 4 5 6
> Not 6 components! : "1 2 3 4 5"
> 1 2 3 4 5 6
> 1 2 3 4 5 6
> Not 6 components! : "1 2 3 4"
> Not 6 components! : "1 2 3"
> admin@tbedfpc:~/tmp % cat regex-1.sh 
> #!/bin/sh
> 
> _f_awk='
> {
>         if ($0 ~ /^([^[:space:]]+[[:space:]]+){5}/) {
>                 print $0
>         } else {
>                 print "Not 6 components! : \"" $0 "\""
>         }
> }'
> 
> data='1 2 3 4 5 6
> 1 2 3 4 5
> 1 2 3 4 5 6
> 1 2 3 4 5 6
> 1 2 3 4
> 1 2 3'
> 
> echo "$data" | awk "$_f_awk"
> admin@tbedfpc:~/tmp % sh ./regex-1.sh 
> Not 6 components! : "1 2 3 4 5 6"
> Not 6 components! : "1 2 3 4 5"
> Not 6 components! : "1 2 3 4 5 6"
> Not 6 components! : "1 2 3 4 5 6"
> Not 6 components! : "1 2 3 4"
> Not 6 components! : "1 2 3"
> admin@tbedfpc:~/tmp % cat regex-2.sh
> #!/bin/sh
> 
> _f_awk='
> {
>         if ($0 ~ /^([^[:space:]]+[[:space:]]+){5}/) {
>                 print $0
>         } else {
>                 print "Not 6 components! : \"" $0 "\""
>         }
> }'
> 
> data='1 2 3 4 5 6
> 1 2 3 4 5
> 1 2 3 4 5 6
> 1 2 3 4 5 6
> 1 2 3 4
> 1 2 3'
> 
> echo "$data" | gawk "$_f_awk"
> admin@tbedfpc:~/tmp % sh ./regex-2.sh
> 1 2 3 4 5 6
> Not 6 components! : "1 2 3 4 5"
> 1 2 3 4 5 6
> 1 2 3 4 5 6
> Not 6 components! : "1 2 3 4"
> Not 6 components! : "1 2 3"
> admin@tbedfpc:~/tmp % uname -a
> FreeBSD tbedfpc 12.0-CURRENT FreeBSD 12.0-CURRENT #0 r321597: Thu Jul 27 12:30:57 UTC 2017     root@tbedfc:/usr/obj/usr/src/sys/GENERIC  amd64
> admin@tbedfpc:~/tmp % pkg info -aI|grep gawk
> gawk-4.1.4_1                   GNU version of Awk
> admin@tbedfpc:~/tmp % 
> 
> 
> Is this the BSD awk (/usr/bin/awk) bug ?
> 
> ---
> KIRIYAMA Kazuhiko
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"

Hello Kiriyama-san,

The man page awk(1) says that {m,n} matcning is not supported. The "{5}"
part matches the literal sequence of characters it's made out of, I suppose.

Someone please correct me if I'm wrong.

Regards,
Tomoya



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