Skip to content

Better Than Grep

searchI’m not that knowledgable about the command line and controlling a server with it. Over the years I have picked up a few bits – I use nano a lot for editing files, and I like to use grep to search my code.

Or at least I used to.


The other day I was trying to work out how something worked in WordPress, and I was using grep to search the WordPress code base – except it wasn’t traversing the directory tree properly. So I asked on Twitter if I was doing something wrong. I got this as a reply…

So I checked out a quick read and it looked like what I need. Ack is a replacement for grep designed specifically for programmers.

Installing it was easy – just a single line of code to grab a Perl script from an external website (obviously caution is recommended when doing this sort of thing).

curl > ~/bin/ack && chmod 0755 !#:3

How To Use Ack

Using ack is super simple. All you have to do is navigate to the directory you want to search and then type ack 'search_term'.

To go with this there are a bunch of additional parameters that allow you to display and filter the results in the way that works best for you. For me I have only used a few of the parameters so far – I’ve listed them below. You can read the rest of the commands in the documentation.

Display lines either side of result

ack -A 5 -B 5 'search_query'

The A and B options display the matched line of code, and the lines before and after – with the number of them limited by the size added after the option. In the example above I limited it to 5 lines either side of the result.

Display files only and not results

ack -l 'search_query'

The l option changes the output so that it only displays the filenames of the files that were found to have the search query. I used this to narrow down my search so that I could work out what directory my problem files were in.



Ben View All

Ben is a lifelong Nintendo fan who also likes to build websites, and develop games. He also buys way too much Lego.

4 thoughts on “Better Than Grep Leave a comment

  1. Pingback: Better Than Grep
  2. I’ve found ack to be better than grep for many of the searches I use, but having grep installed every where means I still end up using it a fair bit.

    In regards to your examples, both can be done with grep as well:

    grep -A 5 -B 5 ‘search_query’

    If you just want 5 lines on both sides you can do that with one option, -C:

    grep -C 5 ‘search_query’

    The -C works for ack as well.

    And the file list match option is the same too:

    grep -l ‘search_query’

    • interesting – thanks for the pointers! I guess that shows how much I have looked into grep and its options 🙂

      To be honest I have been quite happy with grep until it wouldn’t search recursively for me, and I couldn’t work out why. Ack solved the problem and I guess that’s why I spent a bit of time reading the Ack docs.

      • My most common use of grep is grep -ri search * the -r is for recursive, the -i is for case insensitive search. And the * of course means everything 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.