Cheatography
https://cheatography.com
A quick reminder about grep : most common options, regular expressions, wildcards, escaping characters...
UsageGrep 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 ProcessorOperation | 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
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
Thanks for your feedback.
True, I need to make this clearer. Watch out for the next update.
I updated the cheat sheet, I hope it's better now.
Add a Comment
Related Cheat Sheets
More Cheat Sheets by TME520