bug-gawk
[Top][All Lists]
Advanced

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

Re: How to substitute in a string for the first n matches?


From: Peng Yu
Subject: Re: How to substitute in a string for the first n matches?
Date: Mon, 29 Mar 2021 09:24:04 -0500

This can be slow as the time complexity should be linear wrt to the
length of the string (suppose the regex to match is randomly spersed
in the input string), but this implementation is quadratic.

Should gensub() allows a more flexible "h" parameter so that it can
accept a range like 1-3 (besides just numbers and "g"/"G") which means
replacing the 1st, 2nd, and 3rd matches?

On Mon, Mar 29, 2021 at 1:33 AM <arnold@skeeve.com> wrote:
>
> This is the right idea. For production use it should be
> wrapped in a nice function.
>
> Arnold
>
> david kerns <david.t.kerns@gmail.com> wrote:
>
> > don't hate me!
> >
> > awk -v n=4 'BEGIN{x="rrrrrrrrrr";for(i=0;i<n;i++){sub("r","x",x)}print x}'
> >
> > On Fri, Mar 26, 2021 at 1:57 PM Peng Yu <pengyu.ut@gmail.com> wrote:
> >
> > > Hi,
> > >
> > > man gawk says.
> > >
> > > """
> > > gensub(r, s, h [, t])
> > >
> > > h is a number indicating which match of r to replace.
> > > """
> > >
> > > Is there a way to perform string substitution for the first n matches in
> > > awk?
> > >
> > > --
> > > Regards,
> > > Peng
> > >
> > >



-- 
Regards,
Peng



reply via email to

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