grep命令行工具对于在文本数据中搜索与定义的字符串,字符,单词或正则表达式匹配的行和代码片段非常有用。尽管grep的大多数用途是对语法匹配的数据进行排序,但是如果您想用grep排除单词或字符串怎么办?使用grep排除行匹配与在grep中查找和打印匹配项一样有用,因此让我们介绍如何使用grep排除字符串匹配和单词。
显然,您将需要一些命令行经验并接触grep才能发现这一点。如果要继续,可以打开终端应用程序,然后自己尝试。由于grep是与操作系统无关的实用程序,因此您可以在Mac OS,Linux,Unix或任何其他使用grep的工具中使用排除技巧。
排除具有字符串或语法匹配的行的最简单方法是使用grep和-v标志。
例如,假设我们使用cat在命令行中打印文件,但是我们想排除所有包含术语“ ThisWord”的行,那么语法将如下所示:
cat example.txt | grep -v "ThisWord"
输出将是example.txt文本文件,但不包括任何包含与“ ThisWord”匹配的字符串的行。
您还可以直接在文件上使用grep并根据单词或语法排除行匹配,如下所示:
grep -v "ThisWord" example.txt
使用最适合您特定工作流程的方法。
既然您知道了如何排除单个单词的匹配,下一个明显的问题是使用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
如果在示例文本文件上测试了这些选项中的任何一个,则无论采用哪种方法,您都会发现输出是相同的,每个选项都排除了包含目标短语,语法,单词或文本匹配项的行。