Joshua.Hu | Joshua Rogers' Scribbles

ipgrep: grepping for ip addresses

Regex is rarely a solution, but sometimes it can be helpful. One of the best bash aliases I started to use nearly 15 years ago is called ipgrep. It’s a simple alias for grep, to find IPv4 addresses.

I always prefer Extended Regular Expressions (EXE over PCRE if possible, so my expression looks like:

((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])

My bashrc contains, then:

alias ipgrep='grep -E "\b((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b"'

The \b values on each side ensures that 1.1.1.1a and 1.1.1.1234 do not partially match, while 1.1.1.1.some partially matches the 1.1.1.1.