Usage
+ +grep <options> pattern <file...>
+
+
+Matching options
+ +-e, --regexp=PATTERN
+-f, --file=FILE
+-i, --ignore-case
+-v, --invert-match
+-w, --word-regexp
+-x, --line-regexp
+
+
+Pattern options
+ +-F, --fixed-strings # list of fixed strings
+-G, --basic-regexp # basic regular expression (default)
+-E, --extended-regexp # extended regular expression
+-P, --perl-regexp # perl compatible regular expression
+
+
+Expressions
+ +Basic Regular Expressions (BRE)
+ +In BRE, these characters have a special meaning unless they are escaped with a backslash:
+ +^ $ . * [ ] \
However, these characters do not have any special meaning unless they are escaped with a backslash:
+ +? + { } | ( )
Extended Regular Expressions (ERE)
+ +ERE gives all of these characters a special meaning unless they are escaped with a backslash:
+ +^ $ . * + ? [ ] ( ) | { }
Perl Compatible Regular Expressions (PCRE)
+ +PCRE has even more options such as additional anchors and character classes, lookahead/lookbehind, conditional expressions, comments, and more. See the regexp cheatsheet.
+ +Output Options
+ +-c, --count # print the count of matching lines. suppresses normal output
+ --color[=WHEN] # applies color to the matches. WHEN is never, always, or auto
+-m, --max-count=NUM # stop reading after max count is reached
+-o, --only-matching # only print the matched part of a line
+-q, --quiet, --silent
+-s, --no-messages # suppress error messages about nonexistent or unreadable files
+
+
+Context Options
+ +-B NUM, --before-context=NUM # print NUM lines before a match
+-A NUM, --after-context=NUM # print NUM lines after a match
+-C NUM, -NUM, --context=NUM # print NUM lines before and after a match
+
+
+Examples
+ +# Case insensitive: match any line in foo.txt
+# that contains "bar"
+grep -i bar foo.txt
+
+# match any line in bar.txt that contains
+# either "foo" or "oof"
+grep -E "foo|oof" bar.txt
+
+# match anything that resembles a URL in
+# foo.txt and only print out the match
+grep -oE "https?:\/\/((\w+[_-]?)+\.?)+" foo.txt
+
+# can also be used with pipes:
+# match any line that contains "export" in
+# .bash_profile, pipe to another grep that
+# matches any of the first set of matches
+# containing "PATH"
+grep "export" .bash_profile | grep "PATH"
+
+# follow the tail of server.log, pipe to grep
+# and print out any line that contains "error"
+# and include 5 lines of context
+tail -f server.log | grep -iC 5 error
+
+
+
+ + 0 Comments + + for this cheatsheet. + Write yours! +
+