Hacker News new | past | comments | ask | show | jobs | submit login

Definitely ack (https://beyondgrep.com/). It basically is grep but designed for source code. First off it can be downloaded as a single file (Perl script FTW!), so easy to deploy. Secondly, by default it automatically searches recursively, prints out the filename, and line numbers of matches. It also uses PCRE for its regexes which is really nice.

But by far the most time saving feature I have is the type searching functionality in it! For example, one can type 'ack --java System.out' and it will search ONLY the java files! No more 'find . -name *.java -exec grep -Hni System.out {} \;'. And you can add custom types easily through your .ackrc, it is a very well put together piece of software.

(PS: If you're trying it, definitely try out 'ack --bar')




If you mention ack, you gotta mention silver search (ag):

https://github.com/ggreer/the_silver_searcher


If you mention the silver searcher (ag), you gotta mention the platinum searcher (pt) :)

https://github.com/monochromegane/the_platinum_searcher

Since it's pure Go, there's your static binary which makes it easily deployable again.


If you mention ack, ag, and pt, you also have to mention ripgrep (rg) https://github.com/BurntSushi/ripgrep which has the usability features of the newer grep-alikes but is as fast or faster than gnu grep.


What is the difference between ack and ag? I use ag a lot, and it seems, on web, whenever ag is mentioned, ack is also somewhere in vicinity (or vice-versa).


ag is faster ack is simpler and more OG


You should try ripgrep (https://github.com/BurntSushi/ripgrep) which has the same functionality but with 2 orders of magnitude faster.


I used to use grep and ag quite often until I found ripgrep. It's really an incredible piece of software.


> No more 'find . -name * .java -exec grep -Hni System.out {} \;'

While ack is great, I just want to point at you could easily do 'grep -rHni System.out --include \*.java'. Granted it's still more words, but the '--include' directive (which you can specify multiple of) is really great for quickly modifying a grep search to restrict to certain filetypes. No need for find/exec :)


(PS: and also 'ack --cathy')!




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: