如何删除反向 grep 匹配上方和下方的行



我正在使用一些比我想要的更冗长的输出,所以我试图使用 grep 来减少它。输出看起来像这样...

path/to/file1:
No Problems Found
path/to/file3:
Problem Found

我想毫无问题地过滤掉所有有关文件的输出。我能够通过管道输出来删除其中的一行grep -v "No Problems Found".我以为我可以按照 grep -B 1 -A 1 -v "No Problems Found" 的思路使用 -B 和 -A,但事实证明,当与 -v 结合使用时,它们不会反转。

导出文件后,我可以在 Vim 中非常快速地修改输出,但如果可以的话,我想直接在命令行上修改。有什么想法吗?这对Awk或Sed来说更好吗?

awk -v RS= -v ORS='nn' '/No Problems Found/' file
awk -v RS= -v ORS='nn' '!/Problem Found/' file

或 sed (osx 上的 gsed):

sed ':a;N;$!ba;s/[^n]*nNo Problems Foundn//g'

相关内容

  • 没有找到相关文章

最新更新