Title here
Summary here
全称 Global Regular Expression Print,来源于一个 Unix 编辑器 ed
中的命令 g/re/p
,
其中 g
(global)是全局匹配,re
(regular expression)是正则表达式,p
(print)是打印。
因此,grep
工具本质上就是用来全局匹配正则表达式并打印结果。
man grep
grep, egrep, fgrep, rgrep - print lines that match patterns
另外 egrep
、fgrep
、rgrep
分别与 grep -E
、grep -F
、grep -r
相同。
这些变体已被弃用,但为了向后兼容仍然提供。
另外如果不使用正则表达式,使用 -F
选项会更快,
因为默认情况下,即使没有使用正则表达式,grep
仍然会将模式视为正则表达式。
grep
默认使用POSIX的正则表达式,根据不同选项分为以下几种:
基本正则表达式(Basic Regular Expressions,BRE):
默认模式,POSIX 标准,某些元字符(如 ?
、+
、{}
)需要通过反斜杠 \
来转义。
扩展正则表达式(Extended Regular Expressions,ERE):
通过 grep -E
或 egrep
使用,像 ?
、+
、{}
等元字符可以直接使用,无需转义。
Perl 风格的正则表达式(Perl-Compatible Regular Expressions,PCRE):
某些 grep
实现(如 GNU grep
)提供了 -P
选项,用于启用 Perl 风格的正则表达式。
Note
某些 grep 实现(如 GNU grep)提供了 -P 选项,用于启用 Perl 风格的正则表达式。
grep -v foo file
grep -i Foo file
grep -c foo file
grep -F foo file
grep -r foo /path
grep -l foo *.txt
grep -rL foo /path
After
grep -A 3 foo file
Before
grep -B 3 foo file
Context
grep -C 3 foo file
grep -E 'foo|bar' file
grep -e 'foo' -e 'bar' file
grep foo --exclude="*.log" /path
grep foo --include="*.txt" /path