我正在处理一些比我想要的更详细的输出,所以我尝试使用 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='\n\n' '/No Problems Found/' file
awk -v RS= -v ORS='\n\n' '!/Problem Found/' file
关于bash - 如何删除反向 grep 匹配上方和下方的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20961661/