Re: BSD awk bug ?
KIRIYAMA Kazuhikowrote: > Oops. I missed "STANDARDS" section. Thanks for pointed out. > > # But as it says in front "awk supports extended regular > # expressions (EREs). See re_format(7) for more information > # on regular expressions.", I'd like to coinside with > # re_format(7) spec. > > > > > Someone please correct me if I'm wrong. I agree. It's a pain in the arse. In these situations, I've had to use gawk instead (You can set POSIXLY_CORRECT in gawk if it helps you feel cleaner! :-) ) There is also 'mawk' in ports/lang, but I've never tried that. Cheers, Jamie ___ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: BSD awk bug ?
> On Aug 15, 2017, at 20:15, KIRIYAMA Kazuhikowrote: > > At Wed, 16 Aug 2017 10:36:36 +0900, > Tomoya Tabuchi wrote: >> >> 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 ? >> >> 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. > > Oops. I missed "STANDARDS" section. Thanks for pointed out. > > # But as it says in front "awk supports extended regular > # expressions (EREs). See re_format(7) for more information > # on regular expressions.", I'd like to coinside with > # re_format(7) spec. Hello Kiriyama-san, I asked this same question a while back and was told that the {n} form didn’t work with nawk. I’ll have to dig up the exact post if it’s somewhere public. Cheers, -Ngie signature.asc Description: Message signed with OpenPGP using GPGMail
Re: BSD awk bug ?
At Wed, 16 Aug 2017 10:36:36 +0900, Tomoya Tabuchi wrote: > > 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-unsubscr...@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. Oops. I missed "STANDARDS" section. Thanks for pointed out. # But as it says in front "awk supports extended regular # expressions (EREs). See re_format(7) for more information # on regular expressions.", I'd like to coinside with # re_format(7) spec. > > Someone please correct me if I'm wrong. > > Regards, > Tomoya > ___ > freebsd-current@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org" > --- KIRIYAMA Kazuhiko ___ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: BSD awk bug ?
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-unsubscr...@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 ___ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
BSD awk bug ?
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-unsubscr...@freebsd.org"