如何查找文件中包含特殊字符集的行?

如何查找文件中包含特殊字符集的行?

我正在编写一个脚本,该脚本运行现有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'

相关内容