我正在使用gcov从我的程序中获取代码覆盖率结果,它运行良好,但我想从覆盖率为0%的文件中删除结果。
它打印出所需的输出到stdout,但我得到格式为
的附加输出File [directory]
Lines executed:0.00% of [lines]
[newline]
这就是我要删除的输出。还有其他文件,但它们的覆盖率值大于0.00%,因此我希望它们保留。我只想删除0.00%之前和之后的行。
所以我基本上想做grep -v -C 1 :0.00%
除非无法正常工作,grep -C 1 :0.00%
符合我要删除的内容,而grep -v :0.00%
只删除0%的行,但它们无法一起使用。是否有其他类似grep的工具可以执行此操作,还是我的格式错误?
答案 0 :(得分:2)
我只想删除0.00%之前和之后的行。
你可以使用GNU sed:
sed 'N;/\n.*0.00%.*/!{P;D};N;d' inputfile
答案 1 :(得分:1)
将GNU awk用于多字符RS;
$ cat file
foo
File [directory]
Lines executed:0.00% of [lines]
[newline]
bar
$ gawk -v RS='^$' -v ORS= '{sub(/[^\n]+\n[^\n]+:0.00%[^\n]+\n[^\n]+\n/,"")}1' file
foo
bar
以上只是查找描述包含:0.00%
(即[^\n]+:0.00%[^\n]+\n
)的行的RE,然后将其与之前的行(即[^\n]+\n
)和之后的行一起删除它(同样的RE)。