使用 grep --recursive,如何排除其中包含“不需要”和“想要”单词的特定行?

使用 grep --recursive,如何排除其中包含“不需要”和“想要”单词的特定行?

我目前正在构建我的点文件,我想列出TODO: ...项目目录中的所有注释,我创建了一个 bash 别名来执行此操作:

 alias mytodo='grep --recursive "TODO: "'

它工作得很好,但是,它还返回别名定义。这是示例输出。

 devs@dotfiles$ mytodo

 bash/profile.d/aliases/: alias mytodo='grep --recursive "TODO: "'
 bin/git_branch_status/: # TODO: Add checking of remote branch status.
 tools/setup/: # TODO: Add search for existing symlinks.

如何使用别名定义明确排除该行?

答案1

防止正则表达式匹配自身的一种方法是将单个字符包含在字符类中:

alias mytodo='grep --recursive "TOD[O]: "'

或者(向斯蒂芬·查泽拉斯),您可以在模式中使用额外的引号保存别名:

alias mytodo='grep --recursive "TO''DO: "'

那么该行仍然找不到,但别名包含原始模式。当您想使用例如时,这很有帮助。固定字符串匹配 ( grep -F)。

答案2

您可以简单地通过管道将其输入grep -v 'alias'以获取所有不包含alias.

相关内容