5

I thought getting an IP address on OSX or Linux would be rather easy to learn how to use regular expression with grep, but it looks like I either have a syntax error or misunderstanding of what is required.

I know this regex is correct, although I know it may not be a valid IP address I'm not considering that at this point.

(\d{1,3}\.){3}\d{1,3}

so I'm not sure why this doesn't work.

ifconfig | grep -e "(\d{1,3}\.){3}\d{1,3}"
0

2 Answers 2

5

Two things:

First, there is a difference between -e and -E : -e just says "the next thing is an expression", while -E says: "use extended regular expressions". Depending on the exact version of grep you are using, you need -E to get things to work properly.

Second, as was pointed out before, -d isn't recognized by all versions of grep. I found that the following worked: since ip addresses are "conventional" numbers, we don't need anything more fancy than [0-9] to find them:

ifconfig | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'

No need to escape other characters (in my version of grep - using OSX 10.7.5)

Incidentally, when testing your regular expression you can consider using something like

echo "10.1.15.123" | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'

to confirm that your regex is working - regardless of the exact output of ifconfig. It breaks the problem into two smaller problems, which is usually a good strategy.

Sign up to request clarification or add additional context in comments.

2 Comments

Can the matching group in the regex alone be printed?
@SGSVenkatesh please see this question and associated answers. If that doesn't suffice, consider asking a more specific question.
0

\d is not understood by grep, instead you could use [0-9] or [[:digit:]]. Unfortunately there are many dialects of regular expressions. You will also have to escape {, }, ( and ). The following works for me

/sbin/ifconfig | grep -e "\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}"

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.