[ale] hmm. yer never too old to trip on Grep Reg Expressions
Charles Shapiro
hooterpincher at gmail.com
Fri Sep 23 09:01:19 EDT 2016
Ah, regex golf. Try 'def.*buff.*for.*ALTPLAN' Use "grep -i" to ignore
case. Your initial regexp used *file* regex, where "*" means any character
any length. In the proper formal dialects, "*" merely means any number of
the preceding RE, and the "." means any character. Hence, "foo*" in the
shell matches "fooa","foob", et cetera. But in regex, it matches only
"foo", "fooo", "foooooo", et cetera. Watch out for quoting in the shell
also; that's why I used single-quotes. Knowing just a few REs can carry
you a surprising distance. [abc] matches the single character a,b,and c.
So "[abc]+" matches aaaa, bb, or ccc but not i.
This worked for me on the following file:
define buffer snort for ALTPLAN
DEFINE BUFFER BOOF for ALTPLAN
FOO
!:/home/cshapiro/Mapping_Contracts/forsythco> grep -i '^def.*buf.*for
ALTPLAN' foo.txt
define buffer snort for ALTPLAN
DEFINE BUFFER BOOF for ALTPLAN
For extra fnu, try the regex golf site ( http://www.regex.alf.nu/ ).
-- CHS
On Thu, Sep 22, 2016 at 8:35 PM, DJ-Pfulio <DJPfulio at jdpfu.com> wrote:
> I'd use perl. Trivial to read a file, find the lines matching any
> complex regex you like, back up 3 lines and print the following 14 lines.
> Don't forget to handle lines that happen inside the group to be
> exported. Would be good to show file:linenum:LINE so it is clear -
> perhaps highlight the actual line with << >> - idunno.
>
> I like Leam's regex except the leading ^ and trailing $ - these things
> don't need to start in col-1 or end of line. Otherwise, probably
> restrictive enough to minimize unwanted output.
>
> On 09/22/2016 07:30 PM, Leam Hall wrote:
> > Why not "^def*buff*altplan$"? Then grep v out things you don't want.
> >
> > On 09/22/16 14:46, Neal Rhodes wrote:
> >> So, I need to look in about a bazillion source files for variants of
> >>
> >> DEFINE BUFFER SNORT FOR ALTPLAN.
> >> Define Buffer Blech for AltPlan.
> >> Def Buff Blurf for AltPlan.
> >> Def Buff Blurf for AltPlan.
> >> def buff blurf for altplan.
> >> define buff blurf for altplan.
> >> define buffer blorf for
> >> altplan.
> >> define new shared buffer blorf for altplan.
> >>
> >> And grap 3 lines before, 10 lines afterwards, source file and line#.
> >>
> >> I was thinking this would to it:
> >>
> >> grep -i -B 3 -A 10 -H -n -r -f buf-grep.inp * > buf.grep.out
> >>
> >> Where buf-grep.inp was
> >>
> >> def*buff*for*ALTPLAN
> >>
> >> def*buff*for*ARM
> >>
> >> def*buff*for*ARMNOTE
> >>
> >> Alas it is not thus, and the more I study the reg exp notes the more I
> >> see there error of my ways, and the less I see an expression that would
> >> work.
> >>
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ale.org/pipermail/ale/attachments/20160923/ec4d1d5f/attachment.html>
More information about the Ale
mailing list