Grep problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep problem
# 1  
Old 02-13-2003
Network 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  
Old 02-13-2003
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  
Old 02-14-2003
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  
Old 02-18-2003
Thanks LivingFree!

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


Thanks,
Odogbolu98
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

sed Or Grep Problem OR Terminal Problem?

I don't know if you guys get this problem sometimes at Terminal but I had been having this problem since yesterday :( Maybe I overdid the Terminal. Even the codes that used to work doesn't work anymore. Here is what 's happening: * I wanted to remove lines containing digits so I used this... (25 Replies)
Discussion started by: Nexeu
25 Replies

2. Shell Programming and Scripting

Grep problem

Hello. I'm learning shell scripting right now and I'm trying simple scripts. I have a problem with the one below. The idea is to found the number of files containing asd in their name. Here's the code: #!/bin/sh pattern=asd total=0 for f in * do && continue if grep $pattern $f >... (3 Replies)
Discussion started by: EmZvr
3 Replies

3. Shell Programming and Scripting

grep problem

Hi everyone i am facing a strange problem in grep below is the code RC=0 grep $ERROR_MASK $LOG_FILE 2>&1 > /dev/null && RC=1 || RC=0 what does the above statment do i mean it search for error mask into log file and redirect the error to console null then what's the meaning of RC=1 ||... (2 Replies)
Discussion started by: aishsimplesweet
2 Replies

4. UNIX for Dummies Questions & Answers

problem with grep

Hi I am trying to grep a string in a directory which is having 5000 files. PA>> grep -iH 'linc.unisure_pr13n' * bash: /usr/bin/grep: Arg list too long I am getting the error. i also tried PA>> ls -ltr | grep -iH 'linc.unisure_pr13n' * but still i am getting the error Please Advice... (4 Replies)
Discussion started by: subhotech
4 Replies

5. Shell Programming and Scripting

problem with grep |

Hi, When i try this it is not executing either result or total, pls can any one help me in this. max=month_134.log grep result|total $max > log.txt In month_134.log, it should contain either result or total and then send it to log.txt.It should execute result or total in log.txt ... (3 Replies)
Discussion started by: NehaKrish
3 Replies

6. Homework & Coursework Questions

Grep problem

Changed Problem its a sed actually... Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Use a sed command to create an output file from the input file. The input... (2 Replies)
Discussion started by: skalidindi
2 Replies

7. Shell Programming and Scripting

GREP problem

I have a problem. Suppose I have a log named transport.log >> tp finished with return code: 203 meaning: wrong syntax in tp call .... tp finished with return code: 0 meaning: Everything ok. << What i want to do is to get the return code of the 1st one. So I would probably do:... (2 Replies)
Discussion started by: kdyzsa
2 Replies

8. UNIX for Dummies Questions & Answers

Grep problem

Hi there, this is a very simple question. When I do grep -c "PWD" filename, I get 5. This means the filename contains 5 lines of "PWD" occurence. I tried to assign to a variable. int= grep -c "PWD" filename When I typed echo $int The output: 5 I get an empty line space. Now I... (1 Reply)
Discussion started by: felixwhoals
1 Replies

9. Shell Programming and Scripting

Grep Problem

I have a large file that I am grepping to find a certain string. grep 'C:\Data\Directory\Test.txt' test.txt It can not find it even though I know it is in there . I know that there is a problem with the backslashes but I can't get it to work. I tried grep... (2 Replies)
Discussion started by: lesstjm
2 Replies

10. UNIX for Dummies Questions & Answers

grep problem

Hi I would like to know wheather there is anyway to pass a variable to grep argument like this grep "$myvar" $myfile i would put this in a function and then call this function by setting different values to myvar and myfile. is this possible at all. regards Hrishy (4 Replies)
Discussion started by: xiamin
4 Replies
Login or Register to Ask a Question