Использование perl
perl -ne 'exit if ($start == 1 && /}/ ); if ($start == 1) {s/\s*([0-9]|\w+)(,|)/$1/g; printf "%s",$_}; $start=1 if (/'"$vovar"'/);' <your_input_file>
Объяснение
exit if ($start == 1 && /}/ ); Выход из сценария, если есть }, если VARIABLES ( vovar) передается if ($start == 1) {s/\s*([0-9]|\w+)(,|)/$1/g; printf "%s",$_} Печатается строка, если передано VARIABLES (vovar) $start=1 if (/'"$vovar"'/) Установите маркер начала, если VARIABLES (vovar) переданоПояснение
$ vovar=VARIABLES
$ arrayvar=($(perl -ne 'exit if ($start == 1 && /}/ ); if ($start == 1) {s/\s*([0-9]|\w+)(,|)/$1/g; printf "%s",$_}; $start=1 if (/'"$vovar"'/);' foo))
$ for((i=0;i<${#arrayvar[@]};i++)); do echo "${arrayvar[i]}"; done
a9EventCode
a9ControllerNumber
a9ChannelNumber
a9TargetNumber
a9LunNumber
a9EventTimeStamp
$ cat foo
ENTERPRISE eMylexRaidEventInformation
VARIABLES {
a9EventCode,
a9ControllerNumber,
a9ChannelNumber,
a9TargetNumber,
a9LunNumber,
a9EventTimeStamp
}
DESCRIPTION
"device became online."
--#SUMMARY "[Event %d ctl %d chn %d tgt %d lun %d Time %d :] device became online."
--#ARGUMENTS {0,1,2,3,4,5}
--#SEVERITY INFORMATIONAL
--#TIMEINDEX 5
--#STATE OPERATIONAL
::= 1