How to grep the pattern within parenthesis?

grep, regex

Solution

You can use

egrep 'UUID[^\)]+' -o

which will include the "UUID:" prefix that your example code produces.

To get only the id, you can use

egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' -o

In action:

$ echo 'Usage:       xp (UUID: 30503c82-bf04-4f75-ab8f-129b8b350487)' | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' -o
30503c82-bf04-4f75-ab8f-129b8b35
$ echo 'Usage:       xp (UUID: 30503c82-bf04-4f75-ab8f-129b8b350487)' | egrep 'UUID[^\)]+' -o
UUID: 30503c82-bf04-4f75-ab8f-129b8b350487

Problem

Here is the string : ``` Usage: xp (UUID: 30503c82-bf04-4f75-ab8f-129b8b350487) ``` I want to grep this pattern ``` 30503c82-bf04-4f75-ab8f-129b8b350487 ``` I can use grep and sed to pick off it,using like this: ``` grep \(.*\) -o | sed 's/[()]//g' ``` can i use only grep to accomplish this opration?

Original source