Blob Blame History Raw
# Date: Sun, 28 May 2006 11:20:58 +0200
# From: Frantisek Hanzlik <franta@hanzlici.cz>
# Subject: sub() function do'nt alter string length in awk 3.1.5
# To: bug-gawk@gnu.org
# Message-id: <44796B7A.3050908@hanzlici.cz>
# 
# Hello,
# I not know when it is my mistake or gawk bug - in simple example below
# I delete some chars from string variable, and after this string is
# modified, but its length is unchanged.
# 
# awk 'BEGIN{A="1234567890abcdef";
#   for (i=1;i<6;i++){print length(A),"A=" A ".";sub("....","",A)}
# }'
# 16 A=1234567890abcdef.
# 16 A=567890abcdef.
# 16 A=90abcdef.
# 16 A=cdef.
# 16 A=.
# 
# When I use gensub() instead of sub(), result is as I expected:
# 
# awk 'BEGIN{A="1234567890abcdef";
#   for (i=1;i<6;i++){print length(A),"A=" A ".";A=gensub("....","",1,A)}
# }'
# 16 A=1234567890abcdef.
# 12 A=567890abcdef.
# 8 A=90abcdef.
# 4 A=cdef.
# 0 A=.
# 
# OS/GAWK versions:
# - GNU/Linux kernel 2.6.16-1.2122_FC5 #1 i686, Fedora Core 5 distro
# - glibc-2.4-8
# - GNU Awk 3.1.5
# 
# Yours sincerely
# Frantisek Hanzlík
# 
# == Lucní 502        Linux/Unix, Novell, Internet   Tel: +420-373729699 ==
# == 33209 Stenovice   e-mail:franta@hanzlici.cz     Fax: +420-373729699 ==
# == Czech Republic        http://hanzlici.cz/       GSM: +420-604117319 ==
# 
# 
# 
# #####################################################################################
# This Mail Was Scanned by 012.net AntiVirus Service3- Powered by TrendMicro Interscan
# 
BEGIN{A="1234567890abcdef";
   for (i=1;i<6;i++){print length(A),"A=" A ".";sub("....","",A)}
}
BEGIN{A="1234567890abcdef";
   for (i=1;i<6;i++){print length(A),"A=" A ".";A=gensub("....","",1,A)}
}