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
结尾的行。
成功匹配模式的两行已显示到标准终端。
相关文章
Bash 脚本中的 eval 命令
发布时间:2023/06/11 浏览次数:313 分类:操作系统
-
本文是关于在 Bash 脚本中使用字符串作为命令的。 为此,使用了 eval 命令。Bash 脚本中的 Eval 命令 在某些 Bash 脚本中,您必须使用变量或输入值(例如)创建一个字符串,并在最后将其作为命
退出 Bash 脚本
发布时间:2023/06/11 浏览次数:251 分类:操作系统
-
本文简要介绍 Bash 脚本,并讨论在出现错误时退出 Bash 脚本。 它进一步讨论了 Bash 脚本的局限性和好处。什么是 Bash 脚本 计算机脚本/程序告诉计算机做什么和说什么。
Bash 中的 timeout 命令
发布时间:2023/06/11 浏览次数:123 分类:操作系统
-
本文是使用 Bash 中 GNU 的 coreutils 包的 timeout 命令为特定程序设置超时的简单指南。Bash 中的 timeout 命令
在 Bash 中启动一个新的终端会话
发布时间:2023/06/11 浏览次数:134 分类:操作系统
-
在各种情况下,当使用 Bash 或其他 shell 时,可能需要在新终端实例或同一终端中的另一个选项卡中运行脚本或程序。
在 Bash 中检查语法
发布时间:2023/06/11 浏览次数:111 分类:操作系统
-
在 Bash 脚本中情况并非如此,因为 Bash 是一个命令行解释器。 因此,我们需要单独检查语法错误。可以有不同的技术来检查语法问题,如下所示。
使用 Bash 对文本文件中的数字列表求和
发布时间:2023/06/11 浏览次数:127 分类:操作系统
-
本篇文章将介绍使用 Bash 脚本对文件中的数字列表求和的多种方法。 第一种方法涉及使用粘贴命令,我们将讨论两种情况:使用现有文件和使用标准输入读取文件。
在 Bash 中传递所有参数
发布时间:2023/06/11 浏览次数:217 分类:操作系统
-
在 Bash 脚本中,我们主要使用语法 $1 $2 $3 ... $N 在函数中传递变量。此外,我们将看到必要的示例和解释,以使主题更容易理解。在 Bash 中传递所有参数
在 Bash 中解析 XML
发布时间:2023/06/11 浏览次数:185 分类:操作系统
-
本文将展示我们如何通过 Bash 解析 XML。我们将在这里讨论两个库。 我们的第一个库是 xmllint,第二个库称为 XMLStarlet。在 Bash 中使用 xmllint 解析 XML
Bash 脚本中的 Echo Tab 字符
发布时间:2023/06/11 浏览次数:226 分类:操作系统
-
本文演示了如何回显特殊字符(例如制表符),否则这些字符会在 Bash 脚本中转换为单个空格字符。 这扩展到 Bash 以外的 shell(例如 zsh)。