目前,當我有搜索代碼複雜的圖案,我通常使用的組合查找和形式的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正則表達式更好? –