Macos – Grep in Mac OS X’s terminal — only displaying one color

colorscommand linegrepmacosterminal

I am used to grep being able to color the filename, the line number, and the match itself. These three ought to be different colors. This works flawlessly on a Linux terminal and even MinGW on Windows, but on OS X even if I set GREP_COLOR I can only get color on the matched result.

Is the version of grep packaged with the OS too old?

10.7.3 on MBA 13" with Terminal.app.

Best Answer

As Ignacio already said, OS X grep is a bit outdated (it's version 2.5.1). You can install the latest GNU grep though.

As always, you can install most missing Linux tools on OS X through Homebrew:

brew install grep

This will install ggrep so as not to override your existing grep. If you want to change that, see the info message:

All commands have been installed with the prefix "g". If you need to use these commands with their normal names, you can add a "gnubin" directory to your PATH from your bashrc like:

PATH="$(brew --prefix)/opt/grep/libexec/gnubin:$PATH"

Further, you can enable a color option and exclude some directories by default, which may make it more useful:

alias grep="ggrep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}"

Add this to your ~/.bash_profile or whatever shell configuration you are using.