如何使用grep找到多个行块注释的数量?

时间:2017-12-07 23:11:50

标签: regex grep

我正在尝试查找跨越/usr/include/stdio.h中多行的块注释的数量

我设法使用2个grep命令:

egrep '/\*' /usr/include/stdio.h | egrep -cv '\*/'

这可以用更优雅的方式完成,只使用一个正则表达式吗?

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用负面预测,如果您的grep版本支持PCRE(例如GNU grep)。

grep -P '/\*(?!.*\*/)' filename

一般情况下,只要扩展RE,就会出现负面的预测。以下内容非常接近,但如果单行注释以**/结尾,则无效。

grep -E '/\*[^*]*((\*($|[^/]))?[^*]*)*$'

DEMO