Grep 是一个强大的 UNIX 命令,可让您在文件内容中搜索各种参数。 当您进行故障排除或调试时,它特别有用。
grep 命令有大量的选项和用例。 您可能永远不需要或使用所有这些。 但是,您最终会在大多数情况下使用少数几个 grep 命令。
本文列出了最常见的 grep 命令和快速示例。 Linux Handbook 已经有一篇关于 grep 的详细文章,这里不再深入。 我将在这里仅介绍常见选项及其解释。
如果您已经熟悉 grep 命令,但您总是忘记哪个选项能做什么,那就太好了。
选项 | 命令示例 | 描述 |
---|---|---|
一世 | grep -i 模式文件 | 不区分大小写的搜索 |
一种 | grep -A n 模式文件 | 匹配后显示 n 行 |
乙 | grep -B n 模式文件 | 在比赛前显示 n 行 |
C | grep -C n 模式文件 | 在比赛前后显示 n 行 |
v | grep -v 模式文件 | 显示不匹配的行 |
C | grep -c 模式文件 | 计算匹配行数 |
l | grep -l 模式文件 | 仅显示文件名 |
w | grep -w 模式文件 | 匹配确切的单词 |
e | grep -e 正则表达式文件 | 匹配正则表达式模式 |
一种 | grep – 一个模式文件 | 搜索二进制文件 |
r | grep -r 模式目录 | 递归搜索目录 |
我提供了一份 PDF 备忘单,您可以下载、打印并保存在您的办公桌上。
下载 Grep 备忘单
Grep 命令的快速示例
您可能已经知道要在文件中搜索特定文本或模式,您必须像这样使用 grep:
grep search_pattern filename
让我们看看 grep 命令的几个常见用例。
不区分大小写的搜索
默认情况下,使用 grep 进行的搜索区分大小写。 您可以忽略大小写匹配 -i
选项:
grep -i search_pattern filename
这样,grep 将返回匹配两者的行 Holmes
和 holmes
.
显示匹配行之前和之后的行
默认情况下,您只会看到匹配的行。 但是,当您对某些问题进行故障排除时,在匹配行之前和/或之后查看几行会有所帮助。
您可以使用 -A
在匹配的行之后显示行。 请记住,A 代表 After。
下面的命令将显示匹配的行以及匹配后的 5 行。
grep -A 5 search_pattern filename
同样,您可以使用 -B
在匹配行之前显示行的选项。 请记住,B 代表之前。
下面的命令将在匹配行之前显示 5 行以及匹配行。
grep -B 5 search_pattern filename
我最喜欢的是选项 -C
因为它显示了匹配行之前和之后的行。 请记住,这里的 C 代表圆。
下面的命令将显示匹配行之前的 5 行、匹配行和 matchine 行之后的 5 行。
grep -C 5 search_pattern filename
显示不匹配的行
您可以使用 grep 显示与给定模式不匹配的所有行。 这种“反转匹配”与 -v
选项:
grep -v search_pattern filename
你可以结合 -i
和 -v
选项。
计算匹配行数
无需显示匹配的行,您只需获取与模式匹配的行数 -c
选项。 这是小写的c。
grep -c search_pattern filename
你可以结合 -c
和 -v
获取与给定模式不匹配的行数的选项。 您当然可以使用不区分大小写的选项 -i
.
显示匹配行的行号
要显示匹配行的行号,可以使用 -n
选项。
grep -n search_pattern filename
您可以对反向搜索执行相同的操作。
在多个文件中搜索
您可以提供多个文件供 grep 搜索。
grep search_pattern file1 file2
这可以工作,但更实用 example 是搜索特定类型的文件。 为了 example,如果您只想在 shell 脚本中查找字符串(以 .sh 结尾的文件),您可以使用:
grep search_pattern *.sh
递归搜索目录中的所有文件
您可以使用 grep 选项执行递归搜索 -r
. 它将在当前目录及其子目录中的所有文件中搜索给定的模式。
grep -r search_pattern directory_path
仅显示文件名
默认情况下,grep 显示匹配的行。 如果您对多个文件运行了搜索并且只想查看哪些文件包含该字符串,则可以使用 -l
选项。
grep -l search_pattern files_pattern
假设您想查看哪些 Markdown 文件包含“手册”一词,您可以使用:
grep -l handbook *.md
仅搜索全词
默认情况下,grep 将显示包含给定字符串的所有行。 你可能并不总是想要那个。 如果您正在搜索单词“done”,它还会显示包含“doner”或“abandoned”字样的行。
要使 grep 仅搜索完整的单词,您可以使用该选项 -w
:
grep -w search_string file
这样,如果您搜索单词“done”,它只会显示包含“done”的行,而不是“doner”或“abandoned”。
搜索正则表达式模式
您可以使用正则表达式模式为您的搜索提供超级动力。 有一个专用选项 -e
允许使用正则表达式模式和选项 -E
允许使用扩展的正则表达式模式。
grep -e regex_pattern file
搜索这个或那个模式
您可以在同一个 grep 搜索中搜索多个模式。 如果要查看包含一种模式或另一种模式的行,可以使用 OR 运算符 |
. 但是,您必须以下列方式转义此特殊字符。
grep 'pattern1|pattern' filename
您可以将多个模式与 OR 运算符一起使用。
AND 运算符没有特定选项。 为此,您可以多次使用 grep 和管道重定向。
搜索二进制文件
Grep 默认忽略二进制文件。 您可以使用 -a
选项。
grep -a pattern binary_file
下载 Grep 命令备忘单
您可以将此页面添加为书签,以便快速参考 grep 命令选项和用例。
您还可以下载 PDF 格式的 grep 备忘单,将其打印并放在您的办公桌上,以便快速浏览而不会浪费时间。
免费下载 Grep 命令备忘单 即时下载带有 PDF 格式说明的常用 grep 命令。 grep-command-cheatsheet.pdf 78 KB
下载圈
如果您想在此页面上看到任何其他常见的 grep 用例,请告诉我。