grep 中的正则表达式

正则表达式(Regex):正则表达式是一种非常强大的搜索机制和模式,我们用它来操作和匹配文本。 正则表达式和一系列不同或相似的字符用于定义我们的搜索模式。 如果我们将它与 sed、grep 等工具或 Python 等一些编程语言一起使用,正则表达式允许我们以灵活且非常有效的方式搜索、匹配和操作字符串。

现在我们来谈谈 grep。 Grep 是几乎所有基于 Unix 的系统和其他一些操作系统中都可用的命令行工具。 该工具的主要用途之一是搜索文件或数据流中的特定文本模式。 当我们将它与正则表达式结合起来时,grep 就成为我们搜索和过滤文本的多功能工具。

如何使用正则表达式?

基本用法: grep 的基本语法如下:

grep [options] 图案 [file(s)]

  • 模式:这里的模式是我们要在系统中搜索的正则表达式或字符串。
  • 文件:这是我们要在其中搜索特定模式的目标文件或文件列表。 如果我们不指定它,grep 搜索标准输入

有几个选项也可以与我们的正则表达式和 grep 一起使用。 其中一些如下。

  • -i:忽略大小写,无论大小写,我们的模式都会匹配。
  • -v:反转匹配。 显示文件中与模式不匹配的行。
  • -r:它递归地搜索目录以查找我们需要的模式。
  • -n:显示文件中的行号以及匹配的行。
  • -E(或-extended-regexp):它使用扩展正则表达式。

正则表达式示例

我们来找一下这个词“Apple’ 在我们名为 myfile.txt 的文件中,它位于我们的桌面上 Debian 12. 但首先,让我们使用 cd 命令切换到桌面。

$ 光盘 /桌面

因此,让我们在这里搜索单词“apple”,忽略大小写:

$ grep “苹果” 我的文件.txt

现在让我们尝试再做一个 example 这次我们正在寻找香蕉,但这一次我们忽略了大小写,并且我们还看到了行号。

$ grep -我 -N “香蕉” 我的文件.txt

现在让我们在文件中查找以“Hello”开头的行。

$ grep “^你好” 我的文件.txt

我们这里只有一行以“Hello”开头的行。

这次,我们来查找以“Hello”结尾的行。

$ grep “你好$” 我的文件.txt

我们再喝一杯吧 example 我们查找包含“cat”或“dog”的行:

$ grep “猫|狗” 我的文件.txt

这些只是帮助您入门的简单示例。 在某些情况下我们可以使用正则表达式,它有点复杂但仍然很强大。 它使我们能够执行复杂的搜索和文本操作。

正则表达式通常用于匹配特定模式,例如 IP 地址。 每个IP地址由四组以句点分隔的数字组成,范围从0到255,以句点分隔。 以下是如何使用 grep 查找文件中的 IP 地址:

$ grep -Eo ‘([0-9]{1,3}。){3}[0-9]{1,3}’ 我的文件.txt

电子邮件地址遵循一定的模式。 以下是如何使用 grep 在文件中查找电子邮件地址:

$ grep -Eo ‘[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+。[a-zA-Z]{2,}’ 我的文件.txt

文凭

正则表达式(regex)是我们搜索特定模式、匹配它们的强大方法和工具,我们还可以使用它们来操作文本。 我们经常使用它来查找文件和目录中的特定模式 Linux 分布。 当我们将它与 grep 命令结合使用时,它变得更加通用和强大,使我们能够有效地执行高级搜索和过滤任务。

我们在本文中看到了几个示例,展示了如何将正则表达式与 grep 结合使用。 这些示例包括搜索特定单词、匹配以特定模式开头或结尾的不同行以及搜索 IP 地址和电子邮件地址等复杂模式。