2

I'm trying to get everything on the matched line excluding the match using grep.

If I have

#define VERSION 0.1

The command should echo

0.1

I saw this question, but I only want things on the same line.

I read the man page, but I don't see anything that matches my specific usage case. Would a different command possibly be better than grep for this?

2
  • So you're searching for #define VERSION?
    – Dennis
    Mar 6, 2013 at 14:45
  • Yeah. What I'm specifically doing is executing a shell command to get what VERSION is defined as and storing it in a macro in a Makefile.
    – Zach Latta
    Mar 6, 2013 at 14:46

2 Answers 2

2

An easy way to achieve this is piping grep's output to sed:

command | grep "^#define VERSION" | sed 's/^#define VERSION //'

You can achieve the same result using only sed if you use the -n switch and the p (i.e., print) pattern for the regular expression. This will replace and only print lines that have been modified:

command | sed -n 's/^#define VERSION //p'

See: man sed

0
1

If your version of grep supports perl regex you can do it like this:

grep -oP '(?<=#define VERSION )[^ ]*$'

Otherwise use two invocations of grep:

grep '#define VERSION' | grep -o '[^ ]*$'

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .