Add grep.md (#1223)
* create grep.md * update grep.md * Update grep.md Co-authored-by: Rico Sta. Cruz <rstacruz@users.noreply.github.com>
This commit is contained in:
parent
f0f4f05c92
commit
154c4af2d6
|
@ -0,0 +1,102 @@
|
||||||
|
---
|
||||||
|
title: GNU grep
|
||||||
|
category: CLI
|
||||||
|
layout: 2017/sheet
|
||||||
|
updated: 2021-08-23
|
||||||
|
---
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
{: .-prime}
|
||||||
|
|
||||||
|
```bash
|
||||||
|
grep <options> pattern <file...>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Matching options
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-e, --regexp=PATTERN
|
||||||
|
-f, --file=FILE
|
||||||
|
-i, --ignore-case
|
||||||
|
-v, --invert-match
|
||||||
|
-w, --word-regexp
|
||||||
|
-x, --line-regexp
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pattern options
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-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](/regexp).
|
||||||
|
|
||||||
|
### Output Options
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
```
|
Loading…
Reference in New Issue