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

Re: quick scripting question - finding occurrence in many lines



On Mon, Nov 06, 2006 at 11:27:58AM +1100, John O'Hagan wrote:
> On Monday 06 November 2006 05:14, Andrew Sackville-West wrote:
> > On Sun, Nov 05, 2006 at 10:08:12AM -0800, Steve Lamb wrote:
> > > Andrew Sackville-West wrote:
> > > > On Mon, Nov 06, 2006 at 01:10:08AM +1100, John O'Hagan wrote:
> > > >> Or the whole thing could even be done with (I think!):
> > > >>
> > > >> #tr -d '\n' < IN | tr ' ' '\n' | grep -B1 Processor | grep -v
> > > >> 'Processor\|--'
> 
> [...]
> 
> >
> > so that part strips all the newlines. the next tr replaces all spaces
> > with newlines so that each word is now on an individual line, then
> > grep -B1 Processor returns the line before any occurence of
> > Processor. not sure what the second grep does with that \--
> > in it, but I assume it is supposed to eliminate any "Processor" result
> > when the input includes 'Processor Processor'.
> >
> 
> The first grep -B1 returns two lines per result, "Processor" and the number we 
> are after; also, grep -B separates each result with a "--". The second 
> grep -v is just to remove the unwanted lines. 
> 
> E.g., if IN contains:
> 
> junk info 18 Pro

But what if that line were:

junk info 18 Pro-

which seems more likely?

> cessor 
> ggjgh 34 
> Processor dgjhj 
> 19 Processor yytyr
> fee 45 Processor tt 5
> 6 Proce
> ssor rgrge
> 
> Then (after the newline business) grep -B1 Processor gives:
> 
> 18
> Processor
> --
> 34
> Processor
> --
> 19
> Processor
> --
> 45
> Processor
> --
> 56
> Processor
> 
> Grep -v 'Processor\|--' gives just the numbers we want.
> 
> Regards,
> 
> John
> 
> 
> -- 
> To UNSUBSCRIBE, email to debian-user-REQUEST@lists.debian.org 
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> 

-- 
David Jardine

"Running Debian GNU/Linux and
loving every minute of it."  -L. von Sacher-M.(1835-1895)



Reply to: