Linux 中的 Grep 命令Linux 中的 Grep 命令Linux 中的 Grep 命令Linux 中的 Grep 命令
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Linux 中的 Grep 命令

发表 admin at 2025年2月28日
类别
  • 未分类
标签

Grep(全局正则表达式打印)命令是最强大且最常用的 Linux 命令行实用程序。使用 Grep,您可以通过指定搜索条件来搜索有用的信息。它在指定文件中搜索特定的表达式模式。当它找到匹配项时,它会打印文件中与指定模式匹配的所有行。当您必须过滤大型日志文件时,它会派上用场。

在本文中,我们将通过不同的示例来解释 grep 实用程序的使用。我们将使用 Debian 10 来解释本文中提到的命令和方法。

安装 Grep

大多数 Linux 发行版中都安装了 Grep。但是,如果您的系统中缺少它,您可以在终端中使用以下方法安装它:

$ sudo apt-get install grep

使用 Grep

这是 grep 命令的基本语法。它以 grep 开头,后跟一些选项和搜索条件,然后以文件名结尾。

$ grep [options] PATTERN [FILE...]

搜索文件

要在目录中搜索包含特定字符串的文件名,可以按以下方式使用 grep:

$ ls -l | grep -i “string

例如,要搜索包含字符串“test”的文件名,命令为:

$ ls –l | grep –i test

此命令列出包含字符串“test”的所有文件。

在文件中搜索字符串

要搜索特定文件中的字符串,可以使用以下命令语法:

$ grep “string” filename

例如,要在名为 testfile1 的文件中搜索字符串“test”,我们使用了以下命令:

$ grep “employee” testfile1

上面的输出返回了 testfile1 中包含字符串“employee”的句子。

在多个文件中搜索字符串

要在多个文件中搜索字符串,可以使用以下命令语法:

$ grep “string” filename1 filename2

例如,要在两个文件 testfile1 和 testfile2 中搜索字符串“employee”,我们使用了以下命令:

$ grep “employee” testfile1 testfile2

上面的命令将列出文件 testfile1 和 testfile2 中包含字符串“employee”的所有行。

如果所有文件名都以相同文本开头,您还可以使用通配符。

$ grep “string” filename*

例如,如果我们采用上面的示例,其中文件名是 testfile1 和 testfile2 ,则命令将是:

$ grep “employee” testfile*

通过忽略字符串的大小写来搜索文件中的字符串

最常见的是,当您使用 grep 搜索某些内容但没有收到输出时,您会遇到这种情况。发生这种情况是因为搜索字符串时大小写不匹配。就像在我们的示例中一样,如果我们错误地使用“Employee”而不是“employee”,它将返回 nil,因为我们的文件包含字符串“employee” > ” 小写字母。

您可以通过在 grep 后面使用 –i 标志来告诉 grep 忽略搜索字符串的大小写,如下所示:

$ grep –i “string” filename

通过使用 –i 标志,该命令将执行不区分大小写的搜索,并将返回其中包含字符串“employee”的所有行,而不考虑字母是大写还是小写。

使用正则表达式搜索

如果使用得当,正则表达式是 grep 中非常有效的功能。使用 Grep 命令,您可以定义带有开始和结束关键字的正则表达式。通过这样做,您将不需要使用 grep 命令键入整行。以下语法可用于此目的。

$ grep “starting keyword.*endingKeyword” filename

例如,要在名为 testfile1 的文件中搜索以字符串“this”开头并以字符串“data”结尾的行,我们使用了以下命令:

$ grep “this.*data” testfile1

它将打印包含表达式的 testfile1 的整行(起始关键字“this”和结束关键字“data”)。

打印搜索字符串之后/之前的特定行数

您还可以显示文件中字符串匹配之前/之后的特定行数以及匹配的字符串本身。以下语法可用于此目的:

$ grep -A <N> “string” filename

指定文件中匹配到字符串后,将显示N行,包括匹配到的字符串。

例如,这是我们名为 testfile2 的示例文件。

以下命令将输出包含字符串“employee”的匹配行及其后面的两行。

$ grep –A 2 –i “employee” testfile2

同样,要显示特定文件中匹配字符串之前的 N 行,请使用以下语法:

$ grep -B <N> “string” filename

要显示特定文件中字符串周围的 N 行,请使用以下语法:

$ grep -C <N> “string” filename

突出显示搜索

默认情况下,Grep 打印匹配的行,但不显示该行的哪一部分被匹配。如果您在 grep 中使用 –color 选项,它将显示加工字符串出现在文件中的位置。 Grep 默认使用红色来突出显示。

以下语法可用于此目的:

$ grep “string” filename --color

计算匹配数

如果要计算特定单词在特定文件中出现的次数,可以使用带 –c 选项的 grep。它仅返回匹配项的数量,而不返回匹配项本身。以下语法可用于此目的:

$ grep –c “string” filename

这是我们的示例文件,如下所示:

以下命令示例返回单词 file 在名为 testfile3 的文件中出现的次数。

倒排搜索

有时,您想要执行反向搜索以显示除与输入匹配的行之外的所有行。为此,只需使用 –v 标志,后跟 grep:

$ grep –v “string” filename

例如,要显示文件 testfile3 中不包含单词“account”的所有行,我们使用了以下命令:

$ grep –v “account” testfile3

将 Grep 与其他命令一起使用

grep 还可以用来从不同的命令输出中过滤出所需的结果。例如,从“apt –installed list”命令输出中,您只想查找自动安装的软件包,您可以使用 grep 过滤掉结果,如下所示:

$ apt --installed list | grep automatic

同样,lscpu 提供有关 CPU 的详细信息。如果您只是对有关CPU架构的信息感兴趣,可以使用以下命令将其过滤掉:

$ lscpu | grep Architecture

在本文中,我们描述了一些示例,这些示例将帮助您了解 grep 命令及其在不同条件下的使用。如果您需要查看大型配置或日志文件并从中浏览有用的信息,那么掌握 grep 命令可以节省大量时间。

©2015-2025 Norria support@alaica.com