Almacenar algunas cadenas en una matriz

Almacenar algunas cadenas en una matriz

tengo esto

sCSISmart1 TIPO TRAMPA   
    ciclón empresarial                        
    VARIABLES {cycHostAdapterNumber, cycHostAdapterID, cycManagerID}          
    DESCRIPCIÓN                             
    "El agente SNMP está activo".                       
    --#TYPE "El agente SNMP está activo".                    
    --#SUMMARY "El agente SNMP está activo"                    
    --#ARGUMENTOS {}                           
    --#SEVERIDAD INFORMATIVA                       
    --#ÍNDICE DE TIEMPO 100                  
    --#ESTADO OPERATIVO                    
    --#AYUDA "scsismrt.hlp"                          
    --#HELPTAG 101                    
::= 101      

Lo que quiero hacer

Algún comando para copiar cada nombre VARIABLEen una matriz llamadavar

Entonces la salida de arriba

eco "${var[0]}"
cycHostAdapterNúmero

eco "${var[1]}"
cycHostAdapterID

eco "${var[2]}"
cycManagerID

Otro ejemplo

sCSISmart1 TIPO TRAMPA   
    ciclón empresarial                        
    VARIABLES { nombre_celdaFechaHora,                      
                     componente scellSW,                     
                     código de celda,                  
                     celdaCAC,                     
                     scellEIP}                           
    DESCRIPCIÓN                             
    "El agente SNMP está activo".                       
    --#TYPE "El agente SNMP está activo".                    
    --#SUMMARY "El agente SNMP está activo"                    
    --#ARGUMENTOS {}                           
    --#SEVERIDAD INFORMATIVA                       
    --#ÍNDICE DE TIEMPO 100                  
    --#ESTADO OPERATIVO                    
    --#AYUDA "scsismrt.hlp"                          
    --#HELPTAG 101                    
::= 101      

Salida para lo anterior

eco "${var[0]}"
scellNombreFechaHora

eco "${var[1]}"
scellSWComponente

eco "${var[2]}"
código de celda

eco "${var[3]}"
scellCAC

eco "${var[4]}"
scellEIP

Otro ejemplo

sCSISmart1 TIPO TRAMPA   
    ciclón empresarial                        
    VARIABLES {                    
                     scellEIP
               }                           
    DESCRIPCIÓN                             
    "El agente SNMP está activo".                       
    --#TYPE "El agente SNMP está activo".                    
    --#SUMMARY "El agente SNMP está activo"                    
    --#ARGUMENTOS {}                           
    --#SEVERIDAD INFORMATIVA                       
    --#ÍNDICE DE TIEMPO 100                  
    --#ESTADO OPERATIVO                    
    --#AYUDA "scsismrt.hlp"                          
    --#HELPTAG 101                    
::= 101      

Salida para lo anterior

eco "${var[0]}"
scellEIP

Lo que he probado (lo único que hace es almacenar todo en prvar)

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

¿Alguna idea de cómo puedo lograr esto?

Respuesta1

Si está seguro de que los nombres no tendrán espacios, elimine las comillas y utilice ( )la sustitución del comando:

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

El efecto:

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

información relacionada