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

Re: Is this a bug in grep, or is it me...



On 1 Oct 1999, Ben Pfaff wrote:

> Dale Scheetz <dwarf@polaris.net> writes:
> 
> > $ grep -w debhelper override.potato
> > debhelper       optional        devel
> > hello-debhelper optional        devel
> > 
> > In the man page, under the -w option, it says that, in order to match, the
> > string must be either at the beginning of the line, or preceeded by a
> > non-word contituent character, which it declares as letters, digits, and
> > the underscore.
> 
> No, it says that those are word constituent characters.

That's what I meant...
> 
> > The hyphon at the ned of hello in "hello-debhelper" isn't any of these,
> > but grep declares it to match anyway! Is this something to do with the
> > form of my expression?
> 
> It's preceded by a character that isn't a letter, digit or underscore:
> a hyphen.
> 
Which confused me as to why it was being included in the "word".

So a "search string" is defined as any characters delimited by blank, tab,
or newline, but because the hyphon is not considered a "word constituent"
character, debhelper is considered a "whole word" within the string
"hello-debhelper"?

While this seems to be working with two definitions of what is a word (the
parser considers hello-debhelper as "one word" while the expression
analysis considers it two words), I can accept that this is the true state
of affairs.

This leaves me with the unresolved problem of distinguishing between the
two package names.

I just read through the grep manpage (again) looking for something that
will enforce an exact match, when I realised that I can simply skip this
step and do the selection in awk (which I was using before to peel off the
section name from the grep output), so the right command is:

awk -v name=debhelper ' name == $1 { print $3 } ' override.potato

which produced the single line:

devel

rather than:

grep -w debhelper override.potato |awk '{ print $3 }'

which produced the two line ouput:

devel
devel


Thanks for the education, problem-set can be a real killer.

Luck,

Dwarf
--
_-_-_-_-_-   Author of "The Debian Linux User's Guide"  _-_-_-_-_-_-

aka   Dale Scheetz                   Phone:   1 (850) 656-9769
      Flexible Software              11000 McCrackin Road
      e-mail:  dwarf@polaris.net     Tallahassee, FL  32308

_-_-_-_-_-_- See www.linuxpress.com for more details  _-_-_-_-_-_-_-


Reply to: