[ksh, awk] determine values from rather complcated string

Hi there,

I tried and tried, but cannot solve this myself.

I have this string:

enterprises.alcatel.nmu.genos.alarmHandoff.alarmHandoffPurge.purgelistAlarmIds.0 = {alarmId=63868|friendlyName=Dortmund/r01sr1sl01/port#06-#01-Vc12|probableCause=Server Signal Failure},{alarmId=63924|friendlyName=Dortmund/r01sr1sl01/port#06-P|probableCause=Loss Of Signal}

I need to have the alarmId values "63868" and "63924" extracted from it.
The alarmId values are variable of course.
And it can be that 1 to endless amount of alarmIds are present.
So, in this example there are 2, but it can be 1 and it can be 50.

I need to use it in a ksh script.

Any ideas ?

Thanks in advance,

E.J.

nawk -F'[{=}|]' '{for(i=1;i<=NF;i++) if($i=="alarmId") print $(i+1)}' myFile

@vgersh99,

Thanks a lot !!!
Works perfect.
But you already knew that :slight_smile:

E.J.

$str='enterprises.alcatel.nmu.genos.alarmHandoff.alarmHandoffPurge.purgelistAlarmIds.0 = {alarmId=63868|friendlyName=Dortmund/r01sr1sl01/port#06-#01-Vc12|probableCause=Server Signal Failure},{alarmId=63924|friendlyName=Dortmund/r01sr1sl01/port#06-P|probableCause=Loss Of Signal}I need to have the alarmId values "63868" and "63924" extracted from it.';
@tmp=$str=~/alarmId=([0-9]+)/g;
print join "\n", @tmp;