我想跳过评论之间的模式/* */
或其他。例如 f:
My name is
/*
alex
nice man
*/
alex is a nice man
命令:
git grep "alex" f
仅打印:
alex is a nice man
我更喜欢与 git grep 一起使用。
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