The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Problem with GREP. syndex Shell Programming and Scripting 2 07-11-2007 01:44 PM
Grep Problem avadhani UNIX for Dummies Questions & Answers 8 06-23-2005 02:58 PM
grep problem asal_email2 UNIX for Dummies Questions & Answers 4 06-22-2005 08:49 PM
grep problem svennie UNIX for Dummies Questions & Answers 5 11-08-2004 04:29 AM
Grep Problem lesstjm Shell Programming and Scripting 2 10-27-2004 10:13 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 02-13-2003
odogbolu98 odogbolu98 is offline
Registered User
  
 

Join Date: Jan 2002
Location: Minnesota
Posts: 32
Angry Grep problem

Folks,

I need to resolve a problem I'm having with the grep command.

The solution I currently have is:

grep -Ei ' fail | error '

But the problem with this command is that, it doesn't catch strings like failed, failure, failing, etc.

So my question is what's the best way to implement one single grep command to search for all instances of fail and error.

Another spin to this is that, each instant of the fail string comes along with the word Section, while the error keyword does not. I need to capture all instances of fail, failed, failure within the section and all instances of Error.

Any idea on this? Thanks in advance.

Odogbolu98
  #2 (permalink)  
Old 02-13-2003
Neo's Avatar
Neo Neo is online now Forum Staff  
Administrator
  
 

Join Date: Sep 2000
Location: Asia Pacific
Posts: 6,656
Yes, try using egrep and filtering with regular expressions.

below exerpts from the man page:

Code:
NAME
       grep, egrep, fgrep - print lines matching a pattern

SYNOPSIS
       grep [options] PATTERN [FILE...]
       grep [options] [-e PATTERN | -f FILE] [FILE...]

DESCRIPTION
       Grep  searches  the named input FILEs (or standard input if no files are named, or
       the file name - is given) for lines containing a match to the given  PATTERN.   By
       default, grep prints the matching lines.

       In  addition,  two  variant  programs egrep and fgrep are available.  Egrep is the
       same as grep -E.  Fgrep is the same as grep -F.

.................


       -E, --extended-regexp
              Interpret PATTERN as an extended regular expression (see below).

REGULAR EXPRESSIONS
       A regular expression is a pattern  that  describes  a  set  of  strings.   Regular
       expressions  are constructed analogously to arithmetic expressions, by using vari-
       ous operators to combine smaller expressions.

       Grep understands two different versions of regular expression syntax: "basic"  and
       "extended."   In GNU grep, there is no difference in available functionality using
       either syntax.  In other implementations, basic regular expressions are less  pow-
       erful.  The following description applies to extended regular expressions; differ-
       ences for basic regular expressions are summarized afterwards.

       The fundamental building blocks are the regular expressions that  match  a  single
       character.  Most characters, including all letters and digits, are regular expres-
       sions that match themselves.  Any metacharacter with special meaning may be quoted
       by preceding it with a backslash.

       A  list  of  characters  enclosed  by [ and ] matches any single character in that
       list; if the first character of the list is the caret ^ then it matches any  char-
       acter  not  in the list.  For example, the regular expression [0123456789] matches
       any single digit.  A range of characters may be specified by giving the first  and
       last characters, separated by a hyphen.  Finally, certain named classes of charac-
       ters are predefined.  Their names are self explanatory, and  they  are  [:alnum:],
       [:alpha:],  [:cntrl:],  [:digit:],  [:graph:],  [:lower:],  [:print:],  [:punct:],
       [:space:], [:upper:], and [:xdigit:].  For example, [[:alnum:]] means [0-9A-Za-z],
       except  the  latter  form  depends  upon  the POSIX locale and the ASCII character
       encoding, whereas the former is independent of locale and  character  set.   (Note
       that the brackets in these class names are part of the symbolic names, and must be
       included in addition to the brackets delimiting the bracket list.)  Most metachar-
       acters  lose  their special meaning inside lists.  To include a literal ] place it
       first in the list.  Similarly, to include a literal ^ place it anywhere but first.
       Finally, to include a literal - place it last.

       The  period  .   matches  any  single  character.   The symbol \w is a synonym for
       [[:alnum:]] and \W is a synonym for [^[:alnum]].

       The caret ^ and the dollar sign $ are metacharacters that respectively  match  the
       empty  string  at  the beginning and end of a line.  The symbols \< and \> respec-
       tively match the empty string at the beginning and end of a word.  The  symbol  \b
       matches  the  empty  string at the edge of a word, and \B matches the empty string
       provided it's not at the edge of a word.

       A regular expression may be followed by one of several repetition operators:
       ?      The preceding item is optional and matched at most once.
       *      The preceding item will be matched zero or more times.
       +      The preceding item will be matched one or more times.
       {n}    The preceding item is matched exactly n times.
       {n,}   The preceding item is matched n or more times.
       {n,m}  The preceding item is matched at least n times, but not more than m  times.

       Two  regular  expressions  may  be  concatenated; the resulting regular expression
       matches any string formed by concatenating two substrings that respectively  match
       the concatenated subexpressions.

       Two regular expressions may be joined by the infix operator |; the resulting regu-
       lar expression matches any string matching either subexpression.

       Repetition takes precedence over concatenation, which  in  turn  takes  precedence
       over  alternation.   A whole subexpression may be enclosed in parentheses to over-
       ride these precedence rules.

       The backreference \n, where n is a single digit, matches the substring  previously
       matched by the nth parenthesized subexpression of the regular expression.

       In  basic  regular  expressions the metacharacters ?, +, {, |, (, and ) lose their
       special meaning; instead use the backslashed versions \?, \+, \{, \|, \(, and  \).

       Traditional  egrep did not support the { metacharacter, and some egrep implementa-
       tions support \{ instead, so portable scripts should avoid { in egrep patterns and
       should use [{] to match a literal {.

       GNU  egrep attempts to support traditional usage by assuming that { is not special
       if it would be the start of an invalid interval specification.  For  example,  the
       shell  command  egrep  '{1'  searches  for  the two-character string {1 instead of
       reporting a syntax error in the regular expression.  POSIX.2 allows this  behavior
       as an extension, but portable scripts should avoid it.
  #3 (permalink)  
Old 02-14-2003
LivinFree's Avatar
LivinFree LivinFree is offline Forum Advisor  
Goober Extraordinaire
  
 

Join Date: Jul 2001
Location: Portland, OR, USA
Posts: 1,584
Get rid of the spaces in the grep statement:

grep -Ei 'fail|error'

Or instead of grep -E, you can use egrep, as suggested above. They're functionally the same thing.
  #4 (permalink)  
Old 02-18-2003
odogbolu98 odogbolu98 is offline
Registered User
  
 

Join Date: Jan 2002
Location: Minnesota
Posts: 32
Thanks LivingFree!

Thanks works fine. I wonder why I didn't think about that...:-(


Thanks,
Odogbolu98
Sponsored Links
Closed Thread

Bookmarks

Tags
regex, regular expressions

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 08:24 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0