Date: Mon, 17 May 2004 17:36:36 +0200 From: Erik Trulsson <ertr1013@student.uu.se> To: Drew Tomlinson <drew@mykitchentable.net> Cc: FreeBSD Questions <freebsd-questions@freebsd.org> Subject: Re: grep & RegEx Syntax- How to Match? Message-ID: <20040517153636.GA23982@falcon.midgard.homeip.net> In-Reply-To: <40A8D6A5.5090705@mykitchentable.net> References: <40A8D6A5.5090705@mykitchentable.net>
next in thread | previous in thread | raw e-mail | index | archive | help
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. > > 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 > > 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' -- <Insert your favourite quote here.> Erik Trulsson ertr1013@student.uu.se
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040517153636.GA23982>