Linux 中的 grep 命令
-
Linux 中的
grep
命令 -
在 Linux 中使用
grep
命令匹配不区分大小写的模式 -
使用
grep
命令计算 Linux 中的匹配数 -
在 Linux 中使用
grep
命令提供匹配的文件名 -
在 Linux 中使用
grep
命令匹配精确模式 -
在 Linux 中使用
grep
命令仅显示匹配的模式 -
在 Linux 中使用
grep
命令显示行号 -
在 Linux 中使用
grep
命令反转模式匹配 -
在 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.txt
和 example.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
结尾的行。
成功匹配模式的两行已显示到标准终端。