On 15 June 2012 22:59, Josh Hurst <joshhu...@gmail.com> wrote: > Sending it to ast-users because ast-developers doesn't let me subscribe. > > Josh > > ---------- Forwarded message ---------- > From: Josh Hurst <joshhu...@gmail.com> > Date: Fri, Jun 15, 2012 at 10:47 PM > Subject: Re: Re: Re: [ast-developers] RFE: Extend ksh93 printf %q to > accept modifiers > To: ast-developers@research.att.com > > > On Fri, Jun 8, 2012 at 5:33 PM, Lionel Cons > <lionelcons1...@googlemail.com> wrote: >> On 8 June 2012 16:38, Clark WANG <dearv...@gmail.com> wrote: >>> On Fri, Jun 8, 2012 at 10:06 PM, Dan Shelton >>> <dan.f.shel...@googlemail.com> wrote: >>>> On 30 May 2012 01:31, David Korn <d...@research.att.com> wrote: >>>>> cc: ast-developers@research.att.com iszczesn...@gmail.com >>>>> k...@research.att.com >>>>> Subject: Re: Re: Re: [ast-developers] RFE: Extend ksh93 printf %q to >>>>> accept modifiers >>>>> -------- >>>>> >>>>> I have added %(html)q and %(url)q to the next release. >>>> >>>> I think there was a misunderstanding for using %(...)q for egrep >>> >>> There's not a standard or specification for %(...)q so there's no >>> misunderstanding here. I personally like the way %(ere)q and >>> %(pattern)q work. :) >>> >>>> expressions and similar things. The goal was to QUOTE strings that >>>> they retain any all characters in the target format in their literal >>>> meaning and not to CONVERT them like the current implementation for >>>> %(ere)q does. >>>> As an example, %(ere)q should quote special characters like (, ), [, >>>> ], {, }, \ with a preceding backslash so they are retain their literal >>>> meaning: >>>> >>>> printf '%(ere)q' 'hello(world)' >>>> hello\(world\) >>>> >>>> %(csv)q, %(html)q and %(url)q work as expected but %(pattern)q and >>>> %(ere)q need to be changed to just quote the values and not convert >>>> them into something different. >>> >>> They're not converted to something different. They're converted to >>> another form which means the same. >> >> Clark, %q means 'quoting', not conversion. So I agree with Dan that >> from the spirit of naming plain quoting actions belong into %()q while >> whole conversions into a completely different pattern syntax should >> fall into something like %()C. > > I agree with Lionel on that. Besides, we have %R/%P for that. I like > the Olga's original proposal because it made it easy to insert file > names (or other strings) into a extended regular expression pattern > without worrying that they change the meaning or cause corruptions > because their characters were not quoted. > As example: I have two files (from Windows) with the name 'Document > copy(1).doc' and 'Document copy(2).doc'. If %(ere)q would work as I > would expect it it would allow to create a OR pattern simply by doing > a printf "(%(ere)q|%(ere)q)" 'Document copy(1).doc' 'Document > copy(2).doc' and get the properly quoted '(Document > copy\(1\)\.doc|Document copy\(2\)\.doc)' from that. > > So back to the original proposal from Olga: > --------------- > %(egrep)q convert string into a literal accepted plainly by egrep > (e.g. things like '[', ']', '(', ')' etc. are quoted) > %(grep)q convert string into a literal accepted plainly by grep (e.g. > things like '[', ']', etc. are quoted) > %(agrep)q, %(xgrep)q convert string into a literal accepted plainly by > grep -X/-A (e.g. things like '[', ']', '(', ')' etc. are quoted) > --------------- > Can we get %()q changed that egrep/grep/agrep quote the strings as > Olga proposed for the next beta, please? IMO this is more practical > than just having new names for %R/%P > > Josh
This is still broken in ksh93v-. %(ere) should quote things and not convert it. Ced -- Cedric Blancher <cedric.blanc...@googlemail.com> Institute Pasteur _______________________________________________ ast-developers mailing list ast-developers@research.att.com https://mailman.research.att.com/mailman/listinfo/ast-developers