Blame test/gsubtst2.awk

Packit Service f629e6
#From arnold  Thu May  9 17:27:03 2002
Packit Service f629e6
#Return-Path: <arnold@skeeve.com>
Packit Service f629e6
#Received: (from arnold@localhost)
Packit Service f629e6
#	by skeeve.com (8.11.6/8.11.6) id g49ER3K27925
Packit Service f629e6
#	for arnold; Thu, 9 May 2002 17:27:03 +0300
Packit Service f629e6
#Date: Thu, 9 May 2002 17:27:03 +0300
Packit Service f629e6
#From: Aharon Robbins <arnold@skeeve.com>
Packit Service f629e6
#Message-Id: <200205091427.g49ER3K27925@skeeve.com>
Packit Service f629e6
#To: arnold@skeeve.com
Packit Service f629e6
#Subject: fixme
Packit Service f629e6
#X-SpamBouncer: 1.4 (10/07/01)
Packit Service f629e6
#X-SBRule: Pattern Match (Other Patterns) (Score: 4850)
Packit Service f629e6
#X-SBRule: Pattern Match (Spam Phone #) (Score: 0)
Packit Service f629e6
#X-SBClass: Blocked
Packit Service f629e6
#Status: O
Packit Service f629e6
#
Packit Service f629e6
#Path: ord-read.news.verio.net!dfw-artgen!iad-peer.news.verio.net!news.verio.net!fu-berlin.de!uni-berlin.de!host213-120-137-48.in-addr.btopenworld.COM!not-for-mail
Packit Service f629e6
#From: laura@madonnaweb.com (laura fairhead)
Packit Service f629e6
#Newsgroups: comp.lang.awk
Packit Service f629e6
#Subject: bug in gawk3.1.0 regex code
Packit Service f629e6
#Date: Wed, 08 May 2002 23:31:40 GMT
Packit Service f629e6
#Organization: that'll be the daewooo :)
Packit Service f629e6
#Lines: 211
Packit Service f629e6
#Message-ID: <3cd9b0f7.29675926@NEWS.CIS.DFN.DE>
Packit Service f629e6
#Reply-To: laura@madonnaweb.com
Packit Service f629e6
#NNTP-Posting-Host: host213-120-137-48.in-addr.btopenworld.com (213.120.137.48)
Packit Service f629e6
#X-Trace: fu-berlin.de 1020900891 18168286 213.120.137.48 (16 [53286])
Packit Service f629e6
#X-Newsreader: Forte Free Agent 1.21/32.243
Packit Service f629e6
#Xref: dfw-artgen comp.lang.awk:13059
Packit Service f629e6
#
Packit Service f629e6
#
Packit Service f629e6
#I believe I've just found a bug in gawk3.1.0 implementation of
Packit Service f629e6
#extended regular expressions. It seems to be down to the alternation
Packit Service f629e6
#operator; when using an end anchor '$' as a subexpression in an
Packit Service f629e6
#alternation and the entire matched RE is a nul-string it fails
Packit Service f629e6
#to match the end of string, for example;
Packit Service f629e6
#
Packit Service f629e6
#gsub(/$|2/,"x")
Packit Service f629e6
#print
Packit Service f629e6
#
Packit Service f629e6
#input           = 12345
Packit Service f629e6
#expected output = 1x345x
Packit Service f629e6
#actual output   = 1x345
Packit Service f629e6
#
Packit Service f629e6
#The start anchor '^' always works as expected;
Packit Service f629e6
#
Packit Service f629e6
#gsub(/^|2/,"x")
Packit Service f629e6
#print
Packit Service f629e6
#
Packit Service f629e6
#input           = 12345
Packit Service f629e6
#expected output = x1x345
Packit Service f629e6
#actual output   = x1x345
Packit Service f629e6
#
Packit Service f629e6
#This was with POSIX compliance enabled althought that doesn't
Packit Service f629e6
#effect the result.
Packit Service f629e6
#
Packit Service f629e6
#I checked on gawk3.0.6 and got exactly the same results however
Packit Service f629e6
#gawk2.15.6 gives the expected results.
Packit Service f629e6
#
Packit Service f629e6
#I'm about to post a bug report about this into gnu.utils.bug
Packit Service f629e6
#but I thought I'd post it here first in case anyone has
Packit Service f629e6
#any input/comments/whatever ....
Packit Service f629e6
#
Packit Service f629e6
#Complete test results were as follows;
Packit Service f629e6
#
Packit Service f629e6
#input          12345
Packit Service f629e6
#output         gsub(/regex/,"x",input)
Packit Service f629e6
#
Packit Service f629e6
#regex          output
Packit Service f629e6
#(^)            x12345
Packit Service f629e6
#($)            12345x
Packit Service f629e6
#(^)|($)        x12345x
Packit Service f629e6
#($)|(^)        x12345x
Packit Service f629e6
#(2)            1x345
Packit Service f629e6
#(^)|2          x1x345
Packit Service f629e6
#2|(^)          x1x345
Packit Service f629e6
#($)|2          1x345
Packit Service f629e6
#2|($)          1x345
Packit Service f629e6
#(2)|(^)        x1x345
Packit Service f629e6
#(^)|(2)        x1x345
Packit Service f629e6
#(2)|($)        1x345
Packit Service f629e6
#($)|(2)        1x345
Packit Service f629e6
#.((2)|(^))     x345
Packit Service f629e6
#.((^)|(2))     x345
Packit Service f629e6
#.((2)|($))     x34x
Packit Service f629e6
#.(($)|(2))     x34x
Packit Service f629e6
#x{0}((2)|(^))  x1x345
Packit Service f629e6
#x{0}((^)|(2))  x1x345
Packit Service f629e6
#x{0}((2)|($))  1x345
Packit Service f629e6
#x{0}(($)|(2))  1x345
Packit Service f629e6
#x*((2)|(^))    x1x345
Packit Service f629e6
#x*((^)|(2))    x1x345
Packit Service f629e6
#x*((2)|($))    1x345
Packit Service f629e6
#x*(($)|(2))    1x345
Packit Service f629e6
#
Packit Service f629e6
#Here's the test program I used, a few of the cases use ERE {n[,[m]]}
Packit Service f629e6
#operators so that will have to be commented out or have a check
Packit Service f629e6
#added or something (should have put a conditional in I know... ;-)
Packit Service f629e6
#
Packit Service f629e6
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit Service f629e6
#
Packit Service f629e6
BEGIN{
Packit Service f629e6
Packit Service f629e6
TESTSTR="12345"
Packit Service f629e6
Packit Service f629e6
print "input          "TESTSTR
Packit Service f629e6
print "output         gsub(/regex/,\"x\",input)"
Packit Service f629e6
print ""
Packit Service f629e6
Packit Service f629e6
print "regex          output"
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/(^)/,"x")
Packit Service f629e6
print "(^)            "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/($)/,"x")
Packit Service f629e6
print "($)            "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/(^)|($)/,"x")
Packit Service f629e6
print "(^)|($)        "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/($)|(^)/,"x")
Packit Service f629e6
print "($)|(^)        "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/2/,"x")
Packit Service f629e6
print "(2)            "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/(^)|2/,"x")
Packit Service f629e6
print "(^)|2          "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/2|(^)/,"x")
Packit Service f629e6
print "2|(^)          "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/($)|2/,"x")
Packit Service f629e6
print "($)|2          "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/2|($)/,"x")
Packit Service f629e6
print "2|($)          "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/(2)|(^)/,"x")
Packit Service f629e6
print "(2)|(^)        "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/(^)|(2)/,"x")
Packit Service f629e6
print "(^)|(2)        "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/(2)|($)/,"x")
Packit Service f629e6
print "(2)|($)        "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/($)|(2)/,"x")
Packit Service f629e6
print "($)|(2)        "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/.((2)|(^))/,"x")
Packit Service f629e6
print ".((2)|(^))     "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/.((^)|(2))/,"x")
Packit Service f629e6
print ".((^)|(2))     "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/.((2)|($))/,"x")
Packit Service f629e6
print ".((2)|($))     "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/.(($)|(2))/,"x")
Packit Service f629e6
print ".(($)|(2))     "$0
Packit Service f629e6
Packit Service f629e6
# $0=TESTSTR
Packit Service f629e6
# gsub(/x{0}((2)|(^))/,"x")
Packit Service f629e6
# print "x{0}((2)|(^))  "$0
Packit Service f629e6
# 
Packit Service f629e6
# $0=TESTSTR
Packit Service f629e6
# gsub(/x{0}((^)|(2))/,"x")
Packit Service f629e6
# print "x{0}((^)|(2))  "$0
Packit Service f629e6
# 
Packit Service f629e6
# $0=TESTSTR
Packit Service f629e6
# gsub(/x{0}((2)|($))/,"x")
Packit Service f629e6
# print "x{0}((2)|($))  "$0
Packit Service f629e6
# 
Packit Service f629e6
# $0=TESTSTR
Packit Service f629e6
# gsub(/x{0}(($)|(2))/,"x")
Packit Service f629e6
# print "x{0}(($)|(2))  "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/x*((2)|(^))/,"x")
Packit Service f629e6
print "x*((2)|(^))    "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/x*((^)|(2))/,"x")
Packit Service f629e6
print "x*((^)|(2))    "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/x*((2)|($))/,"x")
Packit Service f629e6
print "x*((2)|($))    "$0
Packit Service f629e6
Packit Service f629e6
$0=TESTSTR
Packit Service f629e6
gsub(/x*(($)|(2))/,"x")
Packit Service f629e6
print "x*(($)|(2))    "$0
Packit Service f629e6
Packit Service f629e6
# $0=TESTSTR
Packit Service f629e6
# gsub(/x{0}^/,"x")
Packit Service f629e6
# print "x{0}^          "$0
Packit Service f629e6
# 
Packit Service f629e6
# $0=TESTSTR
Packit Service f629e6
# gsub(/x{0}$/,"x")
Packit Service f629e6
# print "x{0}$          "$0
Packit Service f629e6
# 
Packit Service f629e6
# $0=TESTSTR
Packit Service f629e6
# gsub(/(x{0}^)|2/,"x")
Packit Service f629e6
# print "(x{0}^)|2      "$0
Packit Service f629e6
# 
Packit Service f629e6
# $0=TESTSTR
Packit Service f629e6
# gsub(/(x{0}$)|2/,"x")
Packit Service f629e6
# print "(x{0}$)|2      "$0
Packit Service f629e6
Packit Service f629e6
Packit Service f629e6
}
Packit Service f629e6
#
Packit Service f629e6
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit Service f629e6
#
Packit Service f629e6
#byefrom
Packit Service f629e6
#
Packit Service f629e6
#-- 
Packit Service f629e6
#laura fairhead  # laura@madonnaweb.com  http://lf.8k.com
Packit Service f629e6
#                # if you are bored crack my sig.
Packit Service f629e6
#1F8B0808CABB793C0000666667002D8E410E83300C04EF91F2877D00CA138A7A
Packit Service f629e6
#EAA98F30C494480157B623C4EF1B508FDED1CEFA9152A23DE35D661593C5318E
Packit Service f629e6
#630C313CD701BE92E390563326EE17A3CA818F5266E4C2461547F1F5267659CA
Packit Service f629e6
#8EE2092F76C329ED02CA430C5373CC62FF94BAC6210B36D9F9BC4AB53378D978
Packit Service f629e6
#80F2978A1A6E5D6F5133B67B6113178DC1059526698AFE5C17A5187E7D930492