bug-gawk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gensub() matched component always empty, even for the exact text of


From: arnold
Subject: Re: gensub() matched component always empty, even for the exact text of the example in the manual
Date: Sun, 03 Apr 2022 11:03:17 -0600
User-agent: Heirloom mailx 12.5 7/5/10

Hi.

I'm glad you found the problem. Thanks for letting me know.

Arnold

Zoli Márk <markzoli@yahoo.com> wrote:

>  Hi, Arnold -
> I think I've found the reason for the discrepancy. I am using the fish shell, 
> where the example does not work. However I've just tried the same example in 
> bash, and it works just fine, as it does in fish if I put the code into a 
> source file and invoke it with -f. The example works in the fish command line 
> as well with four backslashes instead of two before every digit, so the 
> replacement string must look like this: "\\\\2 \\\\1". Sorry for having 
> wasted your time, the problem had nothing to do with gawk after all.
> All the best
>    Zoltán
>
>     On Sunday, April 3, 2022, 04:06:12 PM GMT+2, arnold@skeeve.com 
> <arnold@skeeve.com> wrote:  
>  
>  Hi.
>
> Thanks for the report. On my Ubuntu 20.04 system, with the same
> gawk -V output as you provide, the example program works as
> expected.  So I don't know how to explain it failing for you. I see:
>
> $ sha1sum /usr/bin/gawk
> dd8fa40126fb184f7c7f79744ee95c3c079825cc  /usr/bin/gawk
>
> Assuming you're on an x86_64 system, you should get the same
> results.
>
> Otherwise, is your architecture different?
>
> Are you willing to build from source and see if such a version works?
>
> Thanks,
>
> Arnold
>
> Zoli Márk via "Bug reports only for gawk." <bug-gawk@gnu.org> wrote:
>
> > Hello -
> > I have run into a problem for which I needed the (g)awk function gensub(), 
> > namely the "identify matched components and reuse them in the replacement 
> > text" kind of problem. However, it seems that the component thus matched is 
> > always empty, and investigating the issue has shown that in this particular 
> > gawk not even the manual example works. 
> > This happens on Ubuntu 20.04. 
> > gawk -V replies "GNU Awk 5.0.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.2.0)" 
> > plus boilerplate. I can't tell anymore if I installed it from some 
> > repository or it came with Ubuntu - I am, however, sure that I did not 
> > install it from sources.
> > The manual I'm referring to is the one linked from the 
> > https://www.gnu.org/software/gawk/ page, namely 
> > https://www.gnu.org/software/gawk/manual/gawk.html 
> > The example is the following:
> > $ gawk '
> > > BEGIN {
> > >      a = "abc def"
> > >      b = gensub(/(.+) (.+)/, "\\2 \\1", "g", a)
> > >      print b
> > > }'
> > -| def abc
> > Instead of printing the promised "def abc", on my computer this code prints 
> > an empty line only, as both \\1 and \\2 are empty. (Actually it's not an 
> > empty line - it contains the space from between \\2 and \\1 in the 
> > replacement text, as it did with other characters in my code; only the 
> > matched components themselves are empty.) Is this a bug?
> > Best regards 
> >        M- S- Z-
> >
> >
>   



reply via email to

[Prev in Thread] Current Thread [Next in Thread]