如何在文件中搜索包含特定字符串但不包含特定字符串的行?

时间:2015-12-01 09:10:21

标签: file unix

我有一个文件,我想在其中输出包含特定短语而不是另一个短语的所有行到另一个文件。例如,这是一个示例文件:

qwert catsanddogs werwer
sdfg catsandlions sdfggf
dfhgsdg catsandtigers dhjtjye
tqvtw erytwy weyyq
........

所以我想将所有 cat 但不包含 catsanddogs 的行重定向到另一个文件中。

任何人都可以解释我是怎么做到的吗?

1 个答案:

答案 0 :(得分:1)

grep是一个可以过滤输入的工具。基本上你可以描述你想要捕获的内容(使用正则表达式 - 正则表达式描述一组单词)并决定是否要在输出中包含或排除一行(grep适用于文本行)。

grep -v可能是你的朋友:

cat myfile | grep cats | grep -v catsandlions > resultfile

您首先过滤包含cats的每一行,然后从中排除包含catsandlions的所有内容。

您也可以进行相反的操作:首先排除catandlions,然后排除cats