目前,当我有搜索代码复杂的图案,我通常使用的组合查找和形式的grep:Silversearcher/ACK VS发现,grep的
find/\(-type f -regextype posix-extended -regex '.*python3.*py' \) -exec grep -EliI '\b__[[:alnum:]]*_\b' {} \; -exec cat {} \; > ~/python.py
虽然这看起来长期打字,如果你使用zsh,它实际上很短。我只需键入f(第一个字符),然后从我的命令历史记录直接转到该命令。此外,find/grep中的正则表达式已经过标准化和测试,因此没有任何意外或缺少搜索。
ripgrep/ag等等都是新软件,当原来的维护者失去兴趣时,这些新软件可能不会在几年后得到支持。
有没有什么计划,包括在AG/ACK/RG中的grep的grep /其他版本的.gitignore规则或优化?这些优化是否有任何理由被包含在grep中?
对于那些转换过来的人:你们是否觉得切换到rg/ag/ack是值得的,特别是因为这些工具还将有一个学习曲线?
我从ack开始,没有太多的学习曲线。你只需要''ack'\ b __ [[:alnum:]] * _ \ b''(或'ack --python'\ b __ [[:alnum:]] * _ \ b''来限制搜索到python文件)。 – melpomene
'ack'易于使用:与'grep'相关的主要复杂功能是它使用perl正则表达式而不是POSIX。另一个区别是,'grep'是一个优秀的通用工具,''ack'专门用于满足程序员的需求。 – John1024
感谢您的意见。我现在使用的正则表达式相对简单。每个星期,似乎我需要更复杂的正则表达式搜索。我也听说过grep -P,不确定是否有类似的东西存在。如果我将来需要它们,你认为PCRE在搜索的复杂性方面比posix正则表达式更好? –