Sujet : Nitpicking the code (Was: Experiences with match() subexpressions?)
De : gazelle (at) *nospam* shell.xmission.com (Kenny McCormack)
Groupes : comp.lang.awkDate : 14. Apr 2025, 19:20:31
Autres entêtes
Organisation : The official candy of the new Millennium
Message-ID : <vtjjlf$1ni8g$1@news.xmission.com>
References : 1 2 3 4
User-Agent : trn 4.0-test77 (Sep 1, 2010)
In article <
vtgtkr$3br8e$1@dont-email.me>,
Ed Morton <
mortonspam@gmail.com> wrote:
...
data = "R=\"R=r1,R=r2\",R=r2,R=r3,E=e"
nf = patsplit(data, arr, /[RE]=([^,]*|"([^"]|"")*")/)
delete arr
for ( i in arr ) {
sub(/[^=]+=/, "", arr[i])
}
This can't be right, since if the sequence:
delete arr
for (i in arr) ...
can't possibly do anything. I.e., the for statement will be a no-op, since
the array is empty at that point.
or any awk:
>
data = "R=\"R=r1,R=r2\",R=r2,R=r3,E=e"
nf = 0
delete arr
while ( match(data, /[RE]=([^,]*|"([^"]|"")*")/, a) ) {
arr[++nf] = substr(data, RSTART+2, RLENGTH-2)
data = substr(data, RSTART+RLENGTH)
}
I believe "delete arr" (without an index, hence removing the entire array)
is an "extension". I can't quite quote chapter and verse, but I note that
"man mawk" explicitly mentions that mawk supports this syntax, thereby
implying that it isn't "standard". Of course, gawk supports it as well.
So, if by "any awk", you mean "strictly standard", then, well, you can see
where I am going with this.
-- "Only a genius could lose a billion dollars running a casino.""You know what they say: the house always loses.""When life gives you lemons, don't pay taxes.""Grab 'em by the p***y!"