grep command Means – globally search regular expression. It is very useful while searching for strings in Unix and Linux operating system. Here we would be taking a look on grep command in Unix with examples,Linux grep examples,grep command options,egrep command in Unix
How to use grep command in Unix
The grep utility searches text file.txt for a pattern and prints all lines that contain that pattern.
Syntax: grep [ -options ] limited-regular-expression [filename … ]
grep options or grep command options
-c | Print only a count of the lines that contain the pattern. |
-i | Ignore upper/lower case distinction during comparisons. |
-l | Print only the names of file.txt with matching lines,separated by NEWLINE characters. Does not repeat the names of file.txt when the pattern is found more than once. |
-n | Precede each line by its line number in the file (first line is 1). |
-v | Print all lines except those that contain the pattern. |
-r | It recursively search the pattern in all the file.txt in the current directory and all it’s sub-directory. |
-w | It searches the exact word |
Unix grep command examples
- To find all uses of the word “top” (in any case) in the multiples file like x*, and write with line numbers:
grep -i -n top x*
- search ‘tmpfile’ for ‘CAT’ anywhere in a line
grep CAT tmpfile
- grep case insensitive command . By default grep command is case sensitive. You can use option grep -i to make it case insensitive. We can use grep -w option for searching the specific work not sub-string . The below example searches adpatch.log for word failure in any case
grep -i -w failure adpatch.log
- find ‘run time’ or ‘run-time’ in all txt in file.txt
grep run[- ]time *.txt
- pipe who to grep, look for appmmgr
who | grep appmmgr
- grep recursive option .It search for oracle string in current directory files and all the files in sub directory
grep -r "oracle" *
- Grep exclude option (grep -v) . We can use grep -v to exclude the search item item. It will not show the lines which has oracle string in it
ps -ef|grep -v oracle
Understanding Regular Expressions:
^ (Caret) | match expression at the start of a line, as in ^A. |
$ (Question) | match expression at the end of a line, as in A$. |
\ (Back Slash) | turn off the special meaning of the next character, as in \^. To look for a Caret “^” at the start of a line, the expression is ^\^. |
[ ] (Brackets) | match any one of the enclosed characters, as in [aeiou]. Use Hyphen “-” for a range, as in [0-9]. |
[^ ] | match any one character except those enclosed in [ ], as in [^0-9]. |
. (Period) | match a single character of any value, except end of line. So b.b will match “bob”, “bib”, “b-b”, etc. |
* (Asterisk) | match zero or more of the preceding character or expression. An asterisk matches zero or more of what precedes it. Thus [A-Z]* matches any number of upper-case letters, including none, while [A-Z][A-Z]* matches one or more upper-case letters. |
grep regex examples
- search file.txt for lines with ‘kite’
grep kite file.txt
- ‘kite’ at the start of a line
grep '^kite' file.txt
- ‘kite’ at the end of a line
grep 'kite$' file.txt
- lines containing only ‘kite’
grep '^kite$' file.txt
- lines starting with ‘^s’, “\” escapes the ^
grep '\^s' file.txt
- search for ‘kite’ or ‘Kite’
grep '[Kk]ite' file.txt
- search for TOM, Tom, TOm or ToM
grep 'T[oO][mM]' file.txt
- search for blank lines
grep '^$' file.txt
- search for pairs of numeric digits
grep '[0-9][0-9]' file
- list your mail
grep '^From: ' /usr/mail/$USER
- any line with at least one letter
grep '[a-zA-Z]' 1.txt
- anything not a letter or number
grep '[^a-zA-Z0-9]'
- lines with exactly one character
grep '^.$'
- ‘kite’ within double quotes
grep '"kite"'
- ‘kite’, with or without quotes
grep '"*kite"*'
- any line that starts with a Period “.”
grep '^\.'
- line start with “.” and 2 lower case letters} letters
grep '^\.[a-z][a-z]'
egrep command in Unix
If you want to search multiple words in the same grep command ,then use egrep command in UNIX
It search all the three words in the file
It search all the three words in the file
egrep 'cat|bad|sat' file.txt
It discarded all the lines having any of these three word from the output of ps -ef
ps -ef| egrep -v 'cat|bad|sat' :
grep with pipe command
pipe command in Linux let u input the output of the one command to the another command.
Example
ps -ef|grep python
Here output of “ps -ef” command is input for the grep command
Some more Important Grep commands
- Sometimes we just want the grep to show out only the file names which matched the given pattern then we use the -l (lower-case L) option. if multiple files are there. This will simply print all the file names
grep -l ORA-0600 *.trc
- Suppose you want to count that how many lines matches the given pattern/string, then use the option -c
grep -c "TOM" 1.txt
- When you are searching error using grep on a huge file, it may be useful to see some lines around the match.
Lines before the match grep -A 10 "TOM" 1.txt Lines after the match grep -B 10 "TOM" 1.txt Lines around the match grep -C 10 "TOM" 1.txt
- When we want to show the line number of the matched pattern with in the file.we can use grep -n
grep -n "ORA-0600" alert.log
- Grep exclude directory in recursive search. Some time we want to exclude one directory from grep recursive search
grep -r --exclude-dir=log "TOM" *
- Sometimes we just want the grep to show out only the file names which matched the given pattern then we use the -l (lower-case L) option. if multiple files are there. This will simply print all the file names
0 comments:
Post a Comment