Cheatography
https://cheatography.com
A quick reminder about grep : most common options, regular expressions, wildcards, escaping characters...
Usage
Grep standard output (i.e. a stream of text) grep [-options] ‘string’
|
Grep the content of a file grep [-options] ‘string’ filename
|
Wildcards are accepted in filename.
General Regular Expression Processor
Operation |
Option |
Example |
Find a string in 1 or more files |
|
grep 'string' filename1 filename2 ... filenamen |
Case insensitive search |
i |
grep -i 'string' filename |
Use regular expressions (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 |
Recursive grep |
r |
grep -r 'hackers-club.cn' /var/log/apache2/archives/ |
Return all lines which don't match the pattern |
v |
grep -v 'warning' /var/log/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 'apache|wheel|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/log/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 expressions the meta-characters ‘?’, ‘+’, ‘{’, ‘|’, ‘(’, and ‘)’ lose their special meaning; instead use the backslashed versions ‘\?’, ‘\+’, ‘\{’, ‘\|’, ‘\(’, and ‘\)’.
GNU grep -E emulates classic meta-characters. The command ‘grep -E '{1'’ searches for the 2-character string ‘{1’ instead of reporting an error. POSIX allows this behavior as an extension, but portable scripts should avoid it.
Regular expressions : 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. |
[:alpha:] |
Any lower and upper case letter. |
[:digit:] |
Any number. |
[:alnum:] |
Any lower and upper case letter or digit. |
[:space:] |
Any whitespace. |
[A-Za-z] |
Any lower and upper case letter. |
[0-9] |
Any number. |
[0-9A-Za-z] |
Any lower and upper case letter or digit. |
Regular expressions : anchors and positions
^ |
Beginning of line. |
grep '^Once upon a time' /home/livres/lovestory.txt |
$ |
End of line. |
grep 'divorced.$' /home/livres/lovestory.txt |
^$ |
Empty line. |
\< |
Start of word. |
grep '\<love\>' /home/manga/seinen.txt |
\> |
End of word. |
Characters to escape
\ |
. |
[ |
^ |
$ |
' |
* |
- (start of line only) |
|
Created By
https://tme520.com
Metadata
Favourited By
Comments
Awfki, 20:05 4 Apr 17
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 "John" and "James" independently from the case
E and i and w
grep -E -i -w 'john|james' /etc/passwd
TME520, 00:33 7 Sep 17
Thanks for your feedback.
True, I need to make this clearer. Watch out for the next update.
TME520, 07:15 27 Sep 17
I updated the cheat sheet, I hope it's better now.
Add a Comment
Related Cheat Sheets
More Cheat Sheets by TME520