command/script to extract a substring from a string

I have a long string "<ID type="Oid">{[ManagedElement(Key=rvpdn-nvl-mayo-17)][PhysicalRoot][Chassis][Slot(SlotNum=10000)][Module][Port(PortNumber=GigabitEthernet0/1)][PhysicalLayer][DataLinkLayer]}</ID>"

I need to extract "GigabitEthernet0/1" from the above string.
How can it be done? :slight_smile:

I can use cut -d')' -f3 | cut -d'=' -f2
Any other elegant way in unix?

long_string="
port_number=`echo "$long_string" | sed 's/.*PortNumber=\([^)]*\).*/\1/' `

Jean-Pierre.

Using expr...

port_number=$(expr "$long_string" : ".*PortNumber=\([^)]*\).*")

alternatively in Python:

#!/usr/bin/python
import re
longstring = '"<ID type="Oid">{[ManagedElement(Key=rvpdn-nvl-mayo-17)][PhysicalRoot][Chassis][Slot(SlotNum=10000)][Module][Port(PortNumber=GigabitEthernet0/1)][PhysicalLayer][DataLinkLayer]}</ID>"'
get = re.findall(".*PortNumber=(.*)\)",longstring)
print get

Thanks to all.