Linux 中的 grep 命令

Fumbani Banda 2023年1月30日 2022年5月11日
  1. Linux 中的 grep 命令
  2. 在 Linux 中使用 grep 命令匹配不区分大小写的模式
  3. 使用 grep 命令计算 Linux 中的匹配数
  4. 在 Linux 中使用 grep 命令提供匹配的文件名
  5. 在 Linux 中使用 grep 命令匹配精确模式
  6. 在 Linux 中使用 grep 命令仅显示匹配的模式
  7. 在 Linux 中使用 grep 命令显示行号
  8. 在 Linux 中使用 grep 命令反转模式匹配
  9. 在 Linux 中使用 grep 命令匹配起始字符串
  10. 在 Linux 中使用 grep 命令匹配行尾
Linux 中的 grep 命令

本教程演示了使用 grep 命令匹配不区分大小写的模式,计算匹配的数量,显示匹配的文件名,匹配确切的模式,仅显示匹配的模式,显示行号,反转模式匹配,匹配起始字符串并匹配行尾。

Linux 中的 grep 命令

grep 命令表示全局正则表达式打印。grep 命令在给定文件中搜索特定模式。

一旦找到匹配项,grep 命令会显示与该模式匹配的所有行。grep 命令搜索的模式是正则表达式。

grep 命令使用以下语法。

grep [options] pattern [file]

在 Linux 中使用 grep 命令匹配不区分大小写的模式

grep 命令可以匹配不区分大小写的模式。我们使用带有 -i 选项的 grep 命令来匹配忽略区分大小写的模式。

-i 选项告诉 grep 命令忽略模式和文件中数据之间的大小写差异。

下图演示了使用 grep 命令匹配忽略模式和数据之间的大小写区别的模式。我们目前在 foo 目录中,它有 delft.txt 文件。

使用 cat 命令将 delft.txt 文件的内容打印到标准输出。我们使用带有 -i 选项的 grep 命令来匹配 delft.txt 文件中的模式 Havard

输出显示在 delft.txt 中找到了 Havard 的两个匹配项。delft.txt 文件中的匹配对模式有不同的情况。

这是因为 grep 命令中的 -i 选项告诉 grep 命令,而不考虑模式和文件中数据之间的大小写差异。

匹配不区分大小写的模式

使用 grep 命令计算 Linux 中的匹配数

grep 命令还可以计算正确匹配的数量。带有 -c 选项的 grep 命令打印正确匹配的计数。

在下图中,我们使用带有 -i 选项的 grep 命令来检查 delft.txt 中的模式 Havard。该命令找到两个正确的匹配项。

然后我们使用相同的命令,但是这一次,我们包含了 -c 选项来打印正确匹配的数量,并且该命令显示数字 2

这意味着 delft.txt 文件中的模式 Havard 有两个正确匹配项。

计算匹配数

在 Linux 中使用 grep 命令提供匹配的文件名

grep 命令可以给出包含匹配项的文件名。使用带有 -l 选项的 grep 命令会显示包含与模式匹配的文件名。

我们举例说明如何使用 grep 命令返回与模式匹配的文件名。我们在 foo 目录中工作,它有两个文件,delft.txtexample.txt

使用 cat 命令将两个文件的内容显示到标准输出。

我们使用带有 -l 选项的 grep 命令并将模式设置为 text,并传入通配符* 作为 grep 命令的最后一个参数。

-l 选项告诉 grep 命令仅显示包含匹配项的文件名,而不显示文件中的行。

通配符 * 告诉 grep 命令搜索当前目录中的所有文件。

grep 命令打印文件名 example.txt 因为在此文件中找到了模式匹配。

给出匹配的文件名

在 Linux 中使用 grep 命令匹配精确模式

我们还可以使用 grep 命令来匹配确切的模式。为此,我们使用带有 -w 选项的 grep 命令。

下图显示了使用 grep 命令来匹配确切的模式。我们有一个名为 delft.txt 的文本文件。我们使用 cat 命令将 delft.txt 文件的内容显示到标准输出。

使用带有 -w 选项的 grep 命令来匹配 delft.txt 文件中 Havard 的确切模式。 -w 选项告诉 grep 命令匹配整个模式。

此选项考虑模式和文件中数据之间的大小写区别。

grep 命令将具有确切模式的行显示到标准输出。

匹配精确模式

在 Linux 中使用 grep 命令仅显示匹配的模式

使用 grep 命令,我们只能显示包含匹配项的行部分。我们使用带有 -o 选项的 grep 命令。

我们在 foo 目录中,其中包含下图中的 delft.txt 文件。我们使用 cat 命令将文件的内容显示到标准输出。

使用带有 -o 选项的 grep 命令来匹配 delft.txt 文件中的模式 Yale。模式匹配考虑了模式和文件中数据之间的大小写差异。 -o 选项告诉 grep 命令只打印匹配的行部分。

输出显示 grep 命令仅显示与模式匹配的部分。

仅显示匹配的模式

在 Linux 中使用 grep 命令显示行号

使用 grep 命令,我们还可以显示包含模式匹配的行号。我们可以使用带有 -n 选项的 grep 命令来显示包含模式匹配的行号。

在下图中,我们在 foo 目录中工作。

foo 目录包含一个名为 delft.txt 的文件。我们使用 cat 命令将 delft.txt 的内容打印到标准输出。

使用带有 -i-n 选项的 grep 命令来匹配 delft.txt 文件中的模式 Yale-i 告诉 grep 命令忽略模式和文件中数据之间的大小写差异。 -n 选项告诉 grep 命令打印出匹配的行号。

从输出中,我们可以看到已经为包含匹配项的行打印了行号。

显示行号

在 Linux 中使用 grep 命令反转模式匹配

使用 grep 命令,我们可以显示所有不包含与模式匹配的文件行。我们可以使用带有 -v 选项的 grep 命令。

-v 选项告诉 grep 命令只显示那些与提供的模式不匹配的行。

在下图中,我们在 foo 目录中工作。

foo 目录有 delft.txt 文件。我们使用 cat 命令将 delft.txt 文件的内容显示到标准输出。

我们使用带有 -v 选项的 grep 命令来显示与 delft.txt 文件中的 MIT 模式不匹配的所有行。输出显示所有不包含 MIT 模式的行。

反转模式匹配

在 Linux 中使用 grep 命令匹配起始字符串

我们可以使用 grep 命令显示文件中以特定字符串模式开头的所有行。我们可以通过使用^正则表达式模式来做到这一点。

^ 指定匹配应该是以^ 之前的模式开头的行。

在下图中,我们将 grep 命令的匹配项指定为^J。这意味着 grep 命令应该在 delft.txt 文件中查找以字母 J 开头的行。

标准终端上的输出显示了 delft.txt 文件中所有以字母 J 开头的行。

匹配起始字符串

在 Linux 中使用 grep 命令匹配行尾

grep 命令还可以匹配以特定模式结尾的行。我们使用 $ 正则表达式来匹配行尾。

我们在下图中将 grep 命令的匹配项指定为 rd$。这意味着 grep 命令应该在 delft.txt 文件中查找以字符串模式 rd 结尾的行。

成功匹配模式的两行已显示到标准终端。

匹配行尾

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

相关文章 - Linux Grep