小编tim*_*tim的帖子

下一行不包含字符串的 grep 字符串

我想在一个目录及其子目录中的所有文件中搜索包含某个字符串的行,但我想排除那些在紧随其后的行中包含不同的某个字符串的结果。

例如,这个:

foo1 searchString bar
foo1 excludeString bar

foo2 searchString bar
something else

foo3 searchString bar

foo3 excludeString bar

foo4 searchString bar
Run Code Online (Sandbox Code Playgroud)

应该返回这个:

foo2 searchString bar
foo3 searchString bar
foo4 searchString bar
Run Code Online (Sandbox Code Playgroud)

我知道-A打印多行,并且-v不包括结果。但我目前的做法grep -r -A 1 "searchString" | grep -v "excludeString"显然行不通。

有没有办法告诉第二个 grep 如果找到匹配项,它也应该删除前一行?或者我如何以其他方式实现这一目标?

性能不是我最关心的问题;不过,如果命令相对容易记住,那就太好了。

command-line grep search text-processing

5
推荐指数
2
解决办法
3687
查看次数

标签 统计

command-line ×1

grep ×1

search ×1

text-processing ×1