On 5/17/2004 8:36 AM Erik Trulsson wrote:

On Mon, May 17, 2004 at 08:13:41AM -0700, Drew Tomlinson wrote:


I've learned a little about regular expressions and am trying to use them with grep. I want to parse my httpd log to return entries that contain a particular IP address and file ending in .htm or .html. I want to match lines like this one:

123.456.789.123 - - [17/May/2004:06:54:53 -0700] "GET /public/murphys/produced/tricks.html HTTP/1.0" 200 5446 "-" "Mozilla/4.77 [en] (X11; U; Linux 2.2.19 i686)"



Is that supposed to be a single line, or is it actually three lines in
the log.
That matters because grep works on lines.
I will assume that it is only line in the log.


Sorry.  Yes, one single line.

I'm using the this command:

egrep -e ^123\.456\.789\.123.*htm.* /path/to/file



Try quoting the argument given to egrep, otherwise your shell might try to expand '*' as a wildcard. I.e. try

egrep -e '^123\.456\.789\.123.*htm.*' /path/to/file


Thank you!  Yes, this works as I expect.

However this does not match anything. If I shorten the regex to ^123\.456\.789\.123, I match all entries with that IP address. And if I use 'htm' as the regex, I get match all lines with html files. But I can't find the right syntax to match on both conditions.



You could try piping the output from the first grep into a second grep. For example:

grep '^123\.456\.789\.123' /path/to/file | grep 'htm'


Another good idea.

Thanks for your help!

Drew

--
Visit The Alchemist's Warehouse
Magic Tricks, DVDs, Videos, Books, & More!

http://www.alchemistswarehouse.com

_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to