0

我想跳过评论之间的模式/* */或其他。例如 f:

My name is
/*
alex
nice man
*/
alex is a nice man

命令:

git grep "alex" f

仅打印:

alex is a nice man

我更喜欢与 git grep 一起使用。

4

1 回答 1

0

grep代表g/re/p即全局搜索正则表达式并打印匹配的字符串。您要做的远远超出了那个简单的语句,因此您应该使用 awk:

$ awk 'index($0,"/*"){f=1} index($0,"*/"){f=0} !f && /alex/{print}' file
alex is a nice man

虽然以上内容适用于您展示的简单示例,但对于其他情况,例如一行上的多个注释或目标行开头/结尾处的注释或其他构造中的注释定界符(例如在字符串中),它将失败。

如果您有这些情况(例如,您可以在 C 或类似程序中),那么您不应该尝试使用文本处理工具来执行此操作,您需要一个语言解析器,例如参见https://stackoverflow.com/a /35708616/1745001

于 2017-10-08T12:42:15.260 回答