在Linux上用GREP排除多个模式

在Linux上用GREP排除多个模式

介绍

Grep是Linux上一个强大的命令行工具,允许用户在文本文件中搜索模式。它被广泛用于搜索日志文件中的特定字符串或模式,搜索配置文件中的特定行,或从大型数据集中提取信息等任务。grep的一个有用功能是能够从搜索中排除多个模式。当你想从你的搜索中过滤掉不相关或不需要的结果时,这可能很有用。在这篇文章中,我们将讨论如何在Linux上用grep排除多种模式。我们将介绍不同的选项和排除模式的语法,并提供一些例子来说明这些选项在实际情况中的应用。

用Grep排除单一模式

从grep搜索中排除一个模式的最简单方法是使用”-v “选项。这个选项告诉grep进行反向搜索,这意味着它将显示所有不匹配指定模式的行。例如,假设你有一个名为 “file.txt “的文本文件,其中包含以下几行: -v

Apple
Banana
cherry
grape
Mango
Pear
$ grep -v file "banana".txt
Apple
cherry
grape
Linux
Mango
Pear

正如你所看到的,包含 “香蕉 “一词的那一行已被排除在搜索结果之外。

用GREP排除多个模式

要从grep搜索中排除多个模板,我们可以使用”-e “选项,后面跟着我们要排除的模板。”-e “选项允许我们指定多个模板,用空格分隔。

例如,假设你想在搜索结果中排除 “苹果 “和 “樱桃 “这两个词。我们可以使用下面的命令–

$ grep -v -e "apple" -e "cherry" file.txt
Banana
grape
Mango
Pear

正如你所看到的,含有 “苹果 “和 “樱桃 “的行被排除在搜索结果之外。

从列表中排除模板

另一种从grep搜索中排除多个模式的方法是在一个单独的文件中创建一个模式列表,然后使用”-f “选项来告诉grep从这个文件中读取模式。例如,假设我们有一个名为 “exclude.txt “的文件,其中包含一个我们想从搜索结果中排除的模式列表–“exclude.txt”。

Apple
cherry
grape
$ grep -v -f exclude.txt file.txt

该命令的输出结果如下—-。

Banana
Mango
Pear

用正则表达式排除模式

Grep还允许我们使用正则表达式来排除搜索结果中的模式。正则表达式是一个强大的工具,它允许我们使用特殊字符和符号指定复杂的模式。例如,假设你想排除所有包含 “葡萄 “一词或其任何变体的行。

有时我们可能只想排除一个模式,如果它作为一个单独的词出现,而不是一个大词的一部分。在这些情况下,我们可以使用”/b “符号来指定一个字数限制。例如,假设你想从搜索结果中排除 “葡萄 “这个词,但你想包括 “葡萄柚 “这个词。

$ grep -v "\bgrape\b" file.txt
Apple
Banana
cherry
pink grapefruit
Mango
Pear

正如你所看到的,包含 “葡萄 “一词的一行被排除在搜索结果之外,但包含 “葡萄柚 “一词的一行被包括在内。

不包括对大小写不敏感的模型

默认情况下,grep是区分大小写的,这意味着它将 “apple “和 “apple “视为两个不同的模式。然而,我们可以使用”-i “选项使其不区分大小写,这样 “apple “和 “Apple “就被视为同一个模式。例如,假设你想从搜索结果中排除 “apple “这个词,但你想包括含有 “apple “这个词的行。

$ grep -vi apple file.txt

输出结果将是 –

Apple
Banana
cherry
grape
Mango
Pear

正如你所看到的,包含 “苹果 “一词的那一行被包括在搜索结果中,尽管它并不完全符合 “苹果 “的模式。

结论

在这篇文章中,我们讨论如何在Linux上grep多个模式。我们涵盖了不同的选项和排除模式的语法,并提供例子来说明这些选项如何在实际情况下使用。我们还讨论了如何使用正则表达式、字数限制和大小写不敏感来细化你的搜索结果。利用这些技术,你应该能够有效地从grep搜索中过滤不需要的结果。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Linux 基础