Armazenando algumas strings em um array

Armazenando algumas strings em um array

eu tenho isto

sCSISmart1 TIPO ARMADILHA   
    Ciclone EMPRESARIAL                        
    VARIÁVEIS {cycHostAdapterNumber, cycHostAdapterID, cycManagerID}          
    DESCRIÇÃO                             
    "Agente SNMP ativado."                       
    --#TYPE "Agente SNMP está ativo."                    
    --#SUMMARY "Agente SNMP está ativo"                    
    --#ARGUMENTOS {}                           
    --#SEVERIDADE INFORMATIVA                       
    --#TIMEINDEX 100                  
    --#ESTADO OPERACIONAL                    
    --#AJUDA "scsismrt.hlp"                          
    --#HELPTAG 101                    
::= 101      

O que eu quero fazer

Algum comando para copiar cada nome VARIABLEem um array chamadovar

Então a saída acima

eco "${var[0]}"
cycHostAdapterNumber

eco "${var[1]}"
cycHostAdapterID

eco "${var[2]}"
cyManagerID

Outro exemplo

sCSISmart1 TIPO ARMADILHA   
    Ciclone EMPRESARIAL                        
    VARIÁVEIS {scellNameDateTime,                      
                     scellSWComponent,                     
                     célulaECode,                  
                     célulaCAC,                     
                     célulaEIP}                           
    DESCRIÇÃO                             
    "Agente SNMP ativado."                       
    --#TYPE "Agente SNMP está ativo."                    
    --#SUMMARY "Agente SNMP está ativo"                    
    --#ARGUMENTOS {}                           
    --#SEVERIDADE INFORMATIVA                       
    --#TIMEINDEX 100                  
    --#ESTADO OPERACIONAL                    
    --#AJUDA "scsismrt.hlp"                          
    --#HELPTAG 101                    
::= 101      

Saída para o acima

eco "${var[0]}"
scellNameDateTime

eco "${var[1]}"
scellSWComponent

eco "${var[2]}"
scellECode

eco "${var[3]}"
célulaCAC

eco "${var[4]}"
célulaEIP

Outro exemplo

sCSISmart1 TIPO ARMADILHA   
    Ciclone EMPRESARIAL                        
    VARIÁVEIS {                    
                     célulaEIP
               }                           
    DESCRIÇÃO                             
    "Agente SNMP ativado."                       
    --#TYPE "Agente SNMP está ativo."                    
    --#SUMMARY "Agente SNMP está ativo"                    
    --#ARGUMENTOS {}                           
    --#SEVERIDADE INFORMATIVA                       
    --#TIMEINDEX 100                  
    --#ESTADO OPERACIONAL                    
    --#AJUDA "scsismrt.hlp"                          
    --#HELPTAG 101                    
::= 101      

Saída para o acima

eco "${var[0]}"
célulaEIP

O que eu tentei (tudo o que isso faz é armazenar tudo prvar)

prvar="$(awk '/VARIÁVEIS/,/}/ {gsub("VARIÁVEIS"," "); gsub("}"," "); gsub("{"," ");gsub("," ," ");imprimir}'temp1)"

Alguma idéia de como posso conseguir isso?

Responder1

Se você tiver certeza de que os nomes não terão espaços, remova as aspas e use ( )na substituição do comando:

prvar=($(awk ... temp1))

O efeito:

$ prvar=( $(awk '/VARIABLES/,/}/ {gsub("VARIABLES"," "); gsub("}"," "); gsub("{"," ");gsub(","," ");print}' temp1) )
$ echo ${prvar[@]} ${#prvar[@]}
cycHostAdapterNumber cycHostAdapterID cycManagerID 3

informação relacionada