Here is a workaround:
# echo TesT | perl -ne '/\Qtest\E/ and print' # echo TesT | perl -ne '/\Qtest\E/i and print' TesT Looks like perl on it's own does the right thing, so either its a problem in grep or the perl RE library grep uses. Stormy --- On Thu, 8/26/10, Stormy <[email protected]> wrote: > From: Stormy <[email protected]> > Subject: Re: How to use \Q \E in GREP in a case-insensitive way? > To: "Paolo Bonzini" <[email protected]> > Cc: [email protected] > Date: Thursday, August 26, 2010, 7:28 AM > I don't know much about how perl/grep > interact. I tried inside perl, a case-insensitive > replace works, by adding "/i" to the end, e.g: > > # echo "TesT" | perl -p -e 's/\Qtest\E/testworks/' > TesT > # echo "TesT" | perl -p -e 's/\Qtest\E/testworks/i' > testworks > > As can be seen, 'test' matches 'TesT' even inside the \Q \E > as long as the /i is provided. > > Any suggestions? > > > --- On Thu, 8/26/10, Paolo Bonzini <[email protected]> > wrote: > > > From: Paolo Bonzini <[email protected]> > > Subject: Re: How to use \Q \E in GREP in a > case-insensitive way? > > To: "Stormy" <[email protected]> > > Cc: [email protected] > > Date: Thursday, August 26, 2010, 1:33 AM > > On 08/25/2010 05:02 PM, Stormy > > wrote: > > > however, when I try to make grep match in a > > case-insensitive way, > > > using -i flag there are no matches, here's an > > example: > > > > > > sh-3.2# echo "TeST" | grep -P > > '\QTeST\E' ==> Match, expected > > TeST > > > sh-3.2# echo "TeST" | grep -iP '\Qtest\E' > > ==> No match, UNEXPECTED > > > > > > I would expect the last example to match, since > the -i > > flag was > > > passed. I rather stay with grep than to switch > > to perl or parsing > > > the large files manually. > > > > I think this is unexpected behavior of PCRE, not > grep. > > > > Paolo > > > >
