Re: quick scripting question - finding occurrence in many lines
On Fri, Nov 03, 2006 at 08:27:42PM +0000, michael wrote:
> I've been trying to do this with 'awk' but am hitting probs (not used
> awk for ages!) so all offers welcome!
>
> Given a multiple line file, IN, that contains the word Processor
> (possibly split over 2 lines) I wish to output the field immediately
> preceeding Processor.
>
> eg for
>
> junk info 18 Pro
> cessor
>
> I wish to get the field '18'
>
> Cheers, Michael
I've read the replies telling you about awk and it reminds me why I
never use awk or regular expressions. My mind doesn't do cryptic. I
either do fortran77 or python. For this I would use python so you can
lay it out step by step logically.
Since it appears that newlines aren't significant, I would get rid of
them.
IN = open('IN')
instring = IN.read()
IN.close()
I would remove all newlines so it was one huge line.
onelinestring = instring.replace('\n', ' ')
del instring
Split the string into a list of words
inlist = onelinestring.split()
del onelinestring
Iterate through the list looking for 'processor'
oldword = ' '
for newword in inlist
if word.lower == 'processor'
print oldword # the previous word
oldword = newword
del inlist
So I did it in 8 lines instead of one, but in 10 years I'll still know
what those 8 lines do. All the del lines do is free memory as soon as
possible as there is no need to keep multiple versions of the file
around. Internally, I don't know how awk and regular expressions handle
this.
Good luck,
Doug.
Reply to: