我正在编写一个脚本,该脚本运行现有c
程序并查找它是否包含注释:
它们应该以注释标签开始和结束:
/* and */
我怎样才能实现这个目标?
示例:这有效:
egrep "/\.*\./" sample.txt
但我想列出仅以 /* / 开头和结尾的行,例如考虑以下输入: hi / */ hello ;这不是有效的注释,但在使用命令时它会出现在输出中。
答案1
要查找包含/*
和 的行*/
,您需要做的是
grep '/\*.*\*/' file
要查找以 开头/*
和结尾的行*/
,请使用:
grep '^/\*.*\*/$' file
要在开始注释之前和结束注释之后允许有空格,请使用:
grep -E '^\s*/\*.*\*/\s*$' file
由于*
是特殊字符,因此需要对其进行转义 ( \*
)。除此之外,其他一切都只是一个普通角色。上面的正则表达式将匹配 /*
0 个或多个字符 ( .*
) 直到 a */
。
答案2
一种方法是使用 sed:
sed 的%./*.*/%%; /^$/d'
例如删除注释:
printf "hello\nx=1\n/* some comment */\nnot some comment\nthis has /* but no close\n" |
sed 's%.*/\*.*\*/%%; /^$/d'