网站搜索

如何使用Grep查找多个模式


多个模式的 Grep 示例

有时候,您可能希望自定义在文件中搜索特定项的方式。幸运的是,grep 允许用户通过打印所有匹配搜索模式的行来 grep 多个模式。

当您想要使用grep搜索多个模式时,语法如下:

grep ‘pattern_1\|pattern_2\|pattern_n’ file_or_path

您指定的不同模式必须用单引号括起来,并且我们添加管道符号来分隔它们。在这种情况下,反斜杠被添加来表示我们正在处理正则表达式。稍后我们将看到一个更好的使用方法。现在,让我们讨论不同的示例,以理解如何搜索多个模式。

示例 1:grep 多重模式

当您想要 grep 多个模式时,请指定模式、选项和路径或文件名。在我们的第一个示例中,我们正在处理当前目录中的一个文件。我们的搜索模式是“will”和“linux”。请注意,当您运行以下命令时,它是区分大小写的。此外,它不会获取确切的单词。相反,它返回任何包含搜索模式的单词。

grep ‘will\|linux\|pattern_n’ names.txt

当你有目标文件的路径时,你可以输入这个路径而不是文件名。这个选项是最常见的,而不需要先导航到包含目标文件的目录。将文件名替换为路径,并按如下所示执行命令:

示例 2:Grep扩展正则表达式

使用grep处理多个模式的旧方法要求您添加反斜杠,以指示我们正在使用正则表达式。然而,最新的方法允许用户添加-E选项,这表明您使用的模式是扩展正则表达式,因此消除了对反斜杠的需求。

例如,之前的命令可以重写如下:

grep -E ‘pattern_1|pattern_2|pattern_n’ file_or_path

我们仍然得到了相同的结果。

示例 3:精确匹配 grep

从之前的例子中,我们看到 "grep" 命令寻找所有包含搜索模式的模式。然而,您可能会遇到只想获得完全匹配的情况。例如,在单词 "linux-console" 中,如果您的搜索模式是 "linux",您仍然会在搜索结果中得到 "linux-console"。

然而,添加 -w 只会限制输出仅包含特定的匹配项。让我们重新运行之前的命令,看看我们得到什么输出:

对于之前的输出,我们仅检索了精确匹配,缩小了输出范围。

示例 4:处理案件

Grep 是区分大小写的。然而,当您添加 -i 标志时,它会忽略大小写,并输出您多个模式的所有匹配项。

以下输出展示了在不考虑大小写的情况下,添加 -i 会产生不同的输出:

示例5:组合不同的选项

当使用 grep 进行多模式匹配时,您可以结合不同的选项以获得特定的输出。例如,假设您想找到精确匹配而不考虑大小写敏感性。为此,您可以结合 -iw 选项,如下所示:

示例 6:Grep 显示计数

有时,您可能想要计算模式的不同多个匹配项。例如,如果您正在处理日志文件,此选项可以让您记录特定条目在目标文件中出现的次数。要显示此计数,请使用 -c 选项,如以下示例所示:

输出是文件中存在的多个匹配的计数。假设对于特定模式你得到更多的计数。当你重新运行命令时,它会显示不同的计数。

结论

这篇文章讨论了如何使用“grep”命令处理多个模式。我们详细阐述了grep如何处理多个模式的不同示例。通过这些示例,我们希望您现在能够处理多个模式。