Armazenando algumas strings em uma matriz

1

Eu tenho isso

sCSISmart1  TRAP-TYPE   
    ENTERPRISE  cyclone                        
    VARIABLES {cycHostAdapterNumber, cycHostAdapterID, cycManagerID}          
    DESCRIPTION                             
    "SNMP Agent is up."                       
    --#TYPE "SNMP Agent is up."                    
    --#SUMMARY "SNMP Agent is up"                    
    --#ARGUMENTS {}                           
    --#SEVERITY INFORMATIONAL                       
    --#TIMEINDEX 100                  
    --#STATE OPERATIONAL                    
    --#HELP "scsismrt.hlp"                          
    --#HELPTAG 101                    
::=  101      

O que eu quero fazer

Algum comando para copiar cada nome de VARIABLE em uma matriz chamada var

Portanto, a saída acima

echo "${var[0]}"
cycHostAdapterNumber

echo "${var[1]}"
cycHostAdapterID

echo "${var[2]}"
cycManagerID

Outro exemplo

sCSISmart1  TRAP-TYPE   
    ENTERPRISE  cyclone                        
    VARIABLES  { scellNameDateTime,                      
                     scellSWComponent,                     
                     scellECode,                  
                     scellCAC,                     
                     scellEIP}                           
    DESCRIPTION                             
    "SNMP Agent is up."                       
    --#TYPE "SNMP Agent is up."                    
    --#SUMMARY "SNMP Agent is up"                    
    --#ARGUMENTS {}                           
    --#SEVERITY INFORMATIONAL                       
    --#TIMEINDEX 100                  
    --#STATE OPERATIONAL                    
    --#HELP "scsismrt.hlp"                          
    --#HELPTAG 101                    
::=  101      

Saída para o acima

echo "${var[0]}"
scellNameDateTime

echo "${var[1]}"
scellSWComponent

echo "${var[2]}"
scellECode

echo "${var[3]}"
scellCAC

echo "${var[4]}"
scellEIP

Outro exemplo

sCSISmart1  TRAP-TYPE   
    ENTERPRISE  cyclone                        
    VARIABLES  {                    
                     scellEIP
               }                           
    DESCRIPTION                             
    "SNMP Agent is up."                       
    --#TYPE "SNMP Agent is up."                    
    --#SUMMARY "SNMP Agent is up"                    
    --#ARGUMENTS {}                           
    --#SEVERITY INFORMATIONAL                       
    --#TIMEINDEX 100                  
    --#STATE OPERATIONAL                    
    --#HELP "scsismrt.hlp"                          
    --#HELPTAG 101                    
::=  101      

Saída para o acima

echo "${var[0]}"
scellEIP

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

prvar="$(awk '/VARIABLES/,/}/ {gsub("VARIABLES"," "); gsub("}"," "); gsub("{"," ");gsub(","," ");print}' temp1)"

Alguma idéia de como posso conseguir isso?

    
por SamFlynn 30.06.2015 / 08:52

1 resposta

2

Se tiver certeza de que os nomes não terão espaços, remova as aspas e use ( ) em torno da 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
    
por muru 30.06.2015 / 08:56