Tuesday, October 5, 2010

How to use Regular Expression in Unix Linux

One of the most powerful tools available to programmers are Regular Expressions, if you are good with regular expressions you can solve many day to day problem extremely quickly e.g. find all the lines with ERROR in the log file , find the count of any particular ID in the log file , find exceptions etc.

Regular Expression Example in UNIX

a regular expression is a generic concept which has implemented in many different languages and many different tools including Java , here is some of the tools and languages which use a regular expression.

  • The vi editor which comes standard with the Unix/Linux operating system.
  • Any decent programmer's editor e.g. EditPlus
  • The grep command found standard on many operating systems including Unix/Linux
  • The Perl programming language.  
  • The PHP programming language. 

regular Even if you feel regular expression is complex and hard to learn I would suggest to familiarize with at least basic set of regex and try to use it as much as possible and later you will only want to learn more and more to do the stuff quickly.

here are some of the basic regex and their examples:

1) you want to find ERROR in a log file in Linux ?    
grep ERROR logfile

2) you want to find lines starts with ERROR ?
grep ^ERROR logfile     (^ is used to find for starts with)

3) you want to find lines ends with ERROR ?
grep ERROR$ logfile     ($ is used to find for ends with)

4) you want to find empty lines in a log file ?
grep ^$ logfile

5) you want to match upper or lower case ERROR ?
grep [Ee]RROR logfile               ([] is used to include letters]

6) find all lines that contain Error or Exception ?
egrep ERROR|Exception logfile   ( | is used for OR condition)

7) Match the letter E when it appears at least 3 times in a row but possibly 4 or more times in a row: E {3,} 

8) Match the letter E when it appears 3 times in a row or 6 times in a row or anything in between. E{3,6}

9)Match E when it appears 1 or more times in a row.

10) (E+ and E{1,} mean exactly the same thing!)

1 comment :

Anonymous said...

Could you please suggest, how to search for a distinct key value pairs ?

Now, I would like to grep for key1 different values.

Thanks much.

Post a Comment