Show Menu
Cheatography

grep (english) Cheat Sheet by

A quick reminder about grep : most common options, regular expressions, wildcards, escaping characters...

Usage

Grep standard output (i.e. a stream of text)
grep [-opt­ions] ‘string’
Grep the content of a file
grep [-opt­ions] ‘string’ filename
Wildcards are accepted in filen­ame.

General Regular Expression Processor

Oper­ation
Option
Exam­ple
Find a string in 1 or more files
 
grep 'string' filename1 filename2 ... filena­men
Case insens­itive search
i
grep -i 'string' filename
Use regular expres­sions (regex)
 
grep 'regex' filename
Look for words
w
grep -w 'word' filename
Display n lines after matching string
A
grep -A n 'string' filename
Display n lines before matching string
B
grep -B n 'string' filename
Display n lines around matching string
C
grep -C n 'string' filename
Recu­rsive grep
r
grep -r 'hacke­rs-­clu­b.cn' /var/l­­og­/­a­pa­­che­­2/­a­r­ch­­ives/
Return all lines which don't match the pattern
v
grep -v 'warning' /var/l­og/­syslog
Use regex
e
grep -e 'string1' -e 'string2' filename
  
grep --regexp 'string' filename
Return lines starting with 'al'
 
grep -e '^al' filename
Use extended regex
E
grep -E 'apach­e|w­hee­l|root' filename
Get lines containing 1+ w
 
grep -E 'w+' filename
Get lines with 3 w in a row (www)
 
grep -E 'w{3}' filename
Get lines containing between 3 and 6 m in a row
 
grep -E 'm{3,6}' filename
Get lines containing jason or jackson
 
grep -E 'ja(s|­cks)on' filename
Count results
c
grep -c 'error' /var/l­og/­syslog
Display filename
l
grep -l 'string' /var/log/*
Only show the matching part of the string
o
grep -o 'string' filename
Show line number
n
grep -n 'string' filename
About grep -E: In basic regular expres­sions the meta-c­har­acters ‘?’, ‘+’, ‘{’, ‘|’, ‘(’, and ‘)’ lose their special meaning; instead use the backsl­ashed versions ‘\?’, ‘\+’, ‘\{’, ‘\|’, ‘\(’, and ‘\)’.

GNU grep -E emulates classic meta-c­har­acters. The command ‘grep -E '{1'’ searches for the 2-char­acter string ‘{1’ instead of reporting an error. POSIX allows this behavior as an extension, but portable scripts should avoid it.

Regular expres­sions : wildcards

.
Any character.
?
Optional and can only occur once.
*
Optional and can occur more than once.
+
Required and can occur more than once.
{n}
Previous item appears exactly n times.
{n,}
Previous item appears n times or more.
{,m}
Previous item appears n times maximum.
{n,m}
Previous item appears between n and m times.
[:al­pha:]
Any lower and upper case letter.
[:di­git:]
Any number.
[:al­num:]
Any lower and upper case letter or digit.
[:space:]
Any whites­pace.
[A-Z­a-z]
Any lower and upper case letter.
[0-9]
Any number.
[0-9­A-Z­a-z]
Any lower and upper case letter or digit.

Regular expres­sions : anchors and positions

^
Beginning of line.
grep '^Once upon a time' /home/­­li­v­r­es­­/lo­­ve­s­t­or­­y.txt
$
End of line.
grep 'divor­­ced.$' /home/­­li­v­r­es­­/lo­­ve­s­t­or­­y.txt
^$
Empty line.
\<
Start of word.
grep '\<­lov­e\>' /home/­­ma­nga­/se­ine­n.txt
\>
End of word.

Characters to escape

\
.
[
^
$
'
*
- (start of line only)
               
 

Comments

The example below references -E but that's not one of the explained options. According to man page it enables RegEx so that grep behaves like egrep.

Find "­Joh­n" and "­Jam­es" indepe­ndently from the case
E and i and w
grep -E -i -w 'john|­james' /etc/p­­asswd

TME520 TME520, 00:33 7 Sep 17

Thanks for your feedback.

True, I need to make this clearer. Watch out for the next update.

TME520 TME520, 07:15 27 Sep 17

I updated the cheat sheet, I hope it's better now.

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          grep Cheat Sheet

          More Cheat Sheets by TME520

          GIT - Everyday use Cheat Sheet
          Cloud Computing Cheat Sheet
          dig Cheat Sheet