我正在处理一些比我想要的更冗长的输出,所以我试图用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来说是一个更好的工作吗?
答案 0 :(得分:3)
awk -v RS= -v ORS='\n\n' '/No Problems Found/' file
awk -v RS= -v ORS='\n\n' '!/Problem Found/' file
答案 1 :(得分:1)
或使用sed(在osx上获取):
sed ':a;N;$!ba;s/[^\n]*\nNo Problems Found\n//g'