如何用grep排除一个词

目录:

Anonim

grep 命令行工具对于在文本数据中搜索与定义的字符串、字符、单词或正则表达式匹配的行和片段非常有用。虽然 grep 的大多数用途是为语法匹配对数据进行排序,但如果您想使用 grep 排除单词或字符串怎么办?使用 grep 排除行匹配与在 grep 中查找和打印匹配一样有用,所以让我们介绍如何使用 grep 排除字符串匹配和排除单词。

显然,您需要有一些命令行经验并接触过 grep 才能发现这很有用。如果你想继续,你可以打开终端应用程序并亲自尝试一下。由于 grep 是一个与操作系统无关的实用程序,您可以在 Mac OS、Linux、unix 或任何其他使用 grep 的系统中使用排除技巧。

如何用grep排除单个单词

排除具有字符串或语法匹配的行的最简单方法是使用grep 和-v 标志。

例如,假设我们在命令行使用cat 打印一个文件,但我们想排除所有包含术语“ThisWord”的行,则语法如下所示:

"

cat example.txt | grep -v ThisWord​​"

输出将是example.txt 文本文件,但不包括任何包含与“ThisWord”匹配的字符串的行。

也可以直接对文件使用grep,根据单词或句法排除行匹配,像这样:

"

grep -v ThisWord>"

使用最适合您的特定工作流程的那个。

如何用grep排除多个字符串或单词

既然您知道如何排除单个词的匹配项,下一个显而易见的问题是关于使用grep 排除多个词。这同样简单,有几种不同的方法可以使用 -v 标志和 -e 标志来完成此操作。

首先让我们以上面的例子为例,在通过管道传输到grep的文件上使用cat,并排除匹配两个单词的任何行; “Word1”和“Word2”,这看起来像下面这样:

"

cat example.txt | grep -v -e Word1 -e Word2"

任何包含“Word1”或“Word2”的行都将从打印结果中排除。

你也可以像以前一样直接在文件上使用grep:

"

grep -v -e Word1 -e Word2 example.txt"

另一种方法是通过使用管道分隔每个匹配项来分隔用grep排除的内容,如下所示:

"

grep -Ev word1|word2 example.txt"

如果您在示例文本文件上测试这些选项中的任何一个,您会发现无论采用何种方法,输出都是相同的,每个不包括包含目标短语、语法、单词或文本匹配。

太好了,给我一个用grep排除数据的有用例子!

对于高级Mac用户可能会觉得有用的实际示例,我们可以在打印和查询命令行历史记录时使用grep排除来查找以前执行的命令以查找默认匹配项,但从中排除一些选定的默认字符串输出。

在此处的示例中,我们将打印默认字符串匹配的命令历史记录,但排除与“com.apple.itunes”定义的iTunes 相关的任何匹配:

"

history |grep 默认写入 |grep -v -e com.apple.itunes"

因此,如果您一直在关注,这将报告“默认写入”命令的所有历史执行情况,但不包括与 iTunes 应用程序相关的任何内容。不错吧?

如果您有任何使用grep 排除匹配的特别方便的用法,请在下面的评论中与我们分享!如果您喜欢这篇文章,您几乎肯定会喜欢在这里浏览我们的许多命令行文章,其中还有很多值得学习的东西!

如何用grep排除一个词