
у меня есть это
sCSISmart1 ТИП ЛОВУШКИ циклон ENTERPRISE ПЕРЕМЕННЫЕ {cycHostAdapterNumber, cycHostAdapterID, cycManagerID} ОПИСАНИЕ «Агент SNMP запущен». --#TYPE "Агент SNMP запущен." --#SUMMARY "Агент SNMP запущен" --#АРГУМЕНТЫ {} --#СЕРЬЕЗНОСТЬ ИНФОРМАЦИОННАЯ --#TIMEINDEX 100 --#СОСТОЯНИЕ ЭКСПЛУАТАЦИОННОЕ --#HELP "scsismrt.hlp" --#HELPTAG 101 ::= 101
Что я хочу сделать
Некоторая команда для копирования каждого имени VARIABLE
в массив с именемvar
Итак, вывод выше
эхо "${var[0]}" cycHostAdapterNumber эхо "${var[1]}" cycHostAdapterID эхо "${var[2]}" cycManagerID
Другой пример
sCSISmart1 ТИП ЛОВУШКИ циклон ENTERPRISE ПЕРЕМЕННЫЕ { scellNameDateTime, scellSWComponent, scellECode, scellCAC, scellEIP} ОПИСАНИЕ «Агент SNMP запущен». --#TYPE "Агент SNMP запущен." --#SUMMARY "Агент SNMP запущен" --#АРГУМЕНТЫ {} --#СЕРЬЕЗНОСТЬ ИНФОРМАЦИОННАЯ --#TIMEINDEX 100 --#СОСТОЯНИЕ ЭКСПЛУАТАЦИОННОЕ --#HELP "scsismrt.hlp" --#HELPTAG 101 ::= 101
Вывод для вышеизложенного
эхо "${var[0]}" scellNameДатаВремя эхо "${var[1]}" scellSWComponent эхо "${var[2]}" scellECode эхо "${var[3]}" scellCAC эхо "${var[4]}" scellEIP
Другой пример
sCSISmart1 ТИП ЛОВУШКИ циклон ENTERPRISE ПЕРЕМЕННЫЕ { scellEIP } ОПИСАНИЕ «Агент SNMP запущен». --#TYPE "Агент SNMP запущен." --#SUMMARY "Агент SNMP запущен" --#АРГУМЕНТЫ {} --#СЕРЬЕЗНОСТЬ ИНФОРМАЦИОННАЯ --#TIMEINDEX 100 --#СОСТОЯНИЕ ЭКСПЛУАТАЦИОННОЕ --#HELP "scsismrt.hlp" --#HELPTAG 101 ::= 101
Вывод для вышеизложенного
эхо "${var[0]}" scellEIP
Что я пробовал (Все, что он делает, это сохраняет все в prvar
)
prvar="$(awk '/ПЕРЕМЕННЫЕ/, /}/ {gsub("ПЕРЕМЕННЫЕ"," "); gsub("}"," "); gsub("{"," ");gsub(","," ");print}' temp1)"
Есть идеи, как этого добиться?
решение1
Если вы уверены, что в именах не будет пробелов, удалите кавычки и используйте ( )
подстановку команд:
prvar=($(awk ... temp1))
Эффект:
$ prvar=( $(awk '/VARIABLES/,/}/ {gsub("VARIABLES"," "); gsub("}"," "); gsub("{"," ");gsub(","," ");print}' temp1) )
$ echo ${prvar[@]} ${#prvar[@]}
cycHostAdapterNumber cycHostAdapterID cycManagerID 3