Linux 中 20 个有用的 Egrep 命令示例

yanding 2023-07-18 194

摘要: 在本指南中,我们将讨论egrep 命令的一些实际示例。遵循本指南后,用户将能够在 Linux 中执行更好的文本搜索。


您是否曾因在记录中找不到所需信息而灰心丧气?从大型数据库中提取必要的信息是一项复杂且耗时的任务。


当操作系统没有提供合适的工具时,事情就会变得非常具有挑战性,而这正是 Linux 可以拯救你的地方。Linux提供了各种文本删除工具,如sed、cut等。


然而,egrep 是 Linux 中最强大、最常用的文本处理工具之一,我们将讨论 egrep 命令的一些示例。


Linux 中的egrep 命令由grep 命令族识别,用于搜索和匹配文件中的特定模式。它的工作方式类似于 grep -E(grep 扩展正则表达式),但通常会查找特定文件甚至行来排列或打印给定文件中的行。



egrep命令的语法如下:


$egrep [选项] 模式 [文件]

让我们创建一个示例文本文件,其中包含以下内容以供使用:


$ 猫样本.txt


此时,我们可以看到文本文件已经准备好了。现在让我们看一些日常可以使用的常见示例。


professional让我们从一个简单的样本匹配示例开始,我们可以使用以下命令在sample.txt 文件中搜索字符串:


$egrep 专业人士样本.txt


在这里,我们可以看到该命令打印包含指定模式的行。


我们可以通过突出相似性来使结果更具信息性。为此,我们可以使用--coloregrep命令中的选项。例如,下面的命令将识别professionals红色文本:


$egrep --color=汽车专业人士sample.txt


在这里我们可以看到,与前一个结果相比,相同的结果包含更多信息。此外,我们可以很容易地注意到该单词重复了dɔnyala两次。


在大多数 Linux 操作系统中,默认情况下使用以下别名启用上述过程:


$别名egrep='egrep –color=auto'

egrep 命令接受多个文件作为参数,允许我们在多个文件中搜索特定模式。让我们通过一个例子来理解这一点。


首先下载sample.txt文件:


$ cp 样本.txt 样本副本.txt


dɔnyala现在,在两个文件中找到一个模式:


$egrep Professional 样本.txt 样本-copy.txt 


在上面的示例中,我们可以在输出中看到文件名,它代表该文件中的相关行。


有时我们只需要知道该模式是否在文件中。如果是,那么现在有多少行?-c在这种情况下,我们可以在代码中使用年份选项。


例如,下面的命令将显示结果 1,因为dɔnyala只有一行单词。


$egrep -c 专业人士样本.txt


1

在前面的示例中,我们看到-c该选项不计算模式出现的次数。例如,单词dɔwɔlawo在一行中出现两次,但-c该选项将其视为仅一次。


在这种情况下,我们可以使用命令-o选项来仅打印相关模型。例如,下面的命令将dɔnyala在两个单独的行上显示单词:


$egrep -o 专业人士样本.txt

现在,让我们使用 wc 命令读取这些行:


$egrep -o 专业人士sample.txt | 厕所-l


在上面的示例中,我们使用了egrep和wc命令的组合来计算特定模式的出现次数。


默认情况下,egrep 以微观方式执行模式匹配。它意味着单词——我们、我们、我们和我们被视为单独的单词。但是,我们可以使用该选项强制进行无粒子搜索-i。


例如,在下面的命令中,文本mí和的模式匹配将会成功Mí:


$egrep -i 我们样本.txt 



在前面的示例中,我们看到egrep命令执行部分匹配。例如,当我们搜索文本mí时,其他文本的模式匹配也成功。就像网络、数据库一样。


为了克服这个限制,我们可以应用-w选择,这会强制整个案例相等。


$egrep -w 我们样本.txt


到目前为止,我们已经使用egrep命令来绘制包含给定模式的线条。但有时我们想以相反的方式完成这项工作。


例如,我们可能想要绘制不包含给定图像的线条。我们可以-v借助选项来做到这一点:


$egrep -v 我们样本.txt


在这里,我们可以看到该命令打印了所有没有文本的行mí。


我们可以使用-n命令的选项来启用行号,如果模式匹配成功,则在输出中显示行号。这种简单的技术使曝光变得更有意义。


$egrep -n 专业人士样本.txt


从上面的结果中,我们可以看到dɔnyala第5行包含了word。


在静默模式下,egrep 命令不会打印正确的图像。因此,我们必须通过命令的返回值来判断模型匹配是否成功。


我们可以使用命令-q选项来创建静默模式,这在编写 shell 脚本时会派上用场。


$egrep -q 专业人士样本.txt

$egrep -q 不存在的模式样本.txt


在此模型中,返回值为零表示模型存在,而非零值表示模型不存在。


有时,在对称图像周围显示几条线是有意义的。在这种情况下,我们可以使用命令-B选项,该选项在适当的模式之前显示 Nwo 行。


例如,下面的命令将打印样本匹配成功的行及其之前的 2 行。


$egrep -B 2 -n 专业人士sample.txt 


在此示例中,我们使用-n年份选项来显示行号。


同样,我们可以使用命令-A选项来显示模式匹配后的行。例如,下面的命令将打印样本匹配成功的行以及接下来的 2 行。


$egrep -A 2 -n 专业人士sample.txt


除此之外,egrep 命令支持将选择和功能-C相结合的选择,显示...匹配模式之前和之后的行。-A-B


$egrep -C 2 -n 专业人士sample.txt 


正如前面提到的,我们可以对多个文件进行模式匹配。然而,当多个子目录下有文件并且我们将它们作为命令参数传递给所有子目录时,情况就会变得棘手。


在这种情况下,我们可以使用选择以递归方式执行模式匹配,-r如下例所示。


首先,创建2个子目录并将sample.txt文件复制到其中:


$ mkdir -p dir1/dir2

$ cp 样本.txt dir1/

$ cp 样本.txt dir1/dir2/

现在,让我们递归地进行搜索:


$egrep -r 专业人士 dir1


在上面的示例中,我们可以看到 dir1/dir2/sample.txt 和 dir1/sample.txt 文件的样本匹配成功。


我们可以使用点(.)字符来匹配除行尾之外的任何单个字符。例如,下面的正则表达式对应于拼写 har、hat 和 has:


$egrep“哈”。样本.txt


我们可以使用星号(*)来匹配前一个字符零次或多次出现。例如,下面的正则表达式对应于后跟零个或多个mí字符出现的字符串文本。b


$egrep“web*”sample.txt


我们可以使用加号(+)来匹配前一个字符的一次或多次出现。例如,下面的正则表达式对应于包含字符串且后跟至少一次出现的mí字符的文本。b


$egrep“web+”sample.txt


在这里,我们可以看到,由于缺少脚本,因此项 –mí和 的模式匹配不满足。nyeb


我们可以使用插入符号(^)来表示行的开头。例如,下面的正则表达式打印以 text 开头的行Mí:


$egrep“^We”sample.txt


我们可以用美元($)来代表行尾。例如,下面的正则表达式打印以 text 结尾的行e.:


$egrep“e.$”sample.txt


我们可以使用紧跟(^)在美元后面的($)插入符号来表示空行。让我们在正则表达式中使用它来删除空行:


$egrep -n -v "^$" 样本.txt


从上面的结果中,我们可以看到行号2、4、6、8和10没有显示,因为它们是空的。


在本文中,我们讨论了egrep命令的一些很好的例子。人们可以在日常生活中使用这些模型来提高性能。


您知道 Linux 中的 egrep 命令还有其他最佳示例吗?请在下面的评论中告诉我们您的想法。

言鼎科技

The End