Speichern einiger Zeichenfolgen in einem Array

Speichern einiger Zeichenfolgen in einem Array

ich habe das

sCSISmart1 TRAP-TYP   
    ENTERPRISE Zyklon                        
    VARIABLEN {cycHostAdapterNumber, cycHostAdapterID, cycManagerID}          
    BESCHREIBUNG                             
    „SNMP-Agent ist aktiv.“                       
    --#TYPE „SNMP-Agent ist aktiv.“                    
    --#SUMMARY „SNMP-Agent ist aktiv“                    
    --#ARGUMENTE {}                           
    --#SCHWEREGRAD INFORMATION                       
    --#ZEITINDEX 100                  
    --#STATUS OPERATIONELL                    
    --#HELP "scsismrt.hlp"                          
    --#HELPTAG 101                    
::= 101      

Was ich machen will; was ich vorhabe zu tun

Ein Befehl zum Kopieren jedes Namens VARIABLEin ein Array namensvar

Also Ausgabe von oben

echo "${var[0]}"
cycHostAdapterNumber

echo "${var[1]}"
cycHostAdapterID

echo "${var[2]}"
cycManagerID

Ein anderes Beispiel

sCSISmart1 TRAP-TYP   
    ENTERPRISE Zyklon                        
    VARIABLEN { scellNameDatum/Uhrzeit,                      
                     scellSW-Komponente,                     
                     scellECode,                  
                     scellCAC,                     
                     scellEIP}                           
    BESCHREIBUNG                             
    „SNMP-Agent ist aktiv.“                       
    --#TYPE „SNMP-Agent ist aktiv.“                    
    --#SUMMARY „SNMP-Agent ist aktiv“                    
    --#ARGUMENTE {}                           
    --#SCHWEREGRAD INFORMATION                       
    --#ZEITINDEX 100                  
    --#STATUS OPERATIONELL                    
    --#HELP "scsismrt.hlp"                          
    --#HELPTAG 101                    
::= 101      

Ausgabe für das obige

echo "${var[0]}"
ZellnameDatumUhrzeit

echo "${var[1]}"
scellSW-Komponente

echo "${var[2]}"
scellECode

echo "${var[3]}"
scellCAC

echo "${var[4]}"
scellEIP

Ein anderes Beispiel

sCSISmart1 TRAP-TYP   
    ENTERPRISE Zyklon                        
    VARIABLEN {                    
                     scellEIP
               }                           
    BESCHREIBUNG                             
    „SNMP-Agent ist aktiv.“                       
    --#TYPE „SNMP-Agent ist aktiv.“                    
    --#SUMMARY „SNMP-Agent ist aktiv“                    
    --#ARGUMENTE {}                           
    --#SCHWEREGRAD INFORMATION                       
    --#ZEITINDEX 100                  
    --#STATUS OPERATIONELL                    
    --#HELP "scsismrt.hlp"                          
    --#HELPTAG 101                    
::= 101      

Ausgabe für das obige

echo "${var[0]}"
scellEIP

Was ich versucht habe (das speichert lediglich alles in prvar):

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

Irgendwelche Ideen, wie ich das erreichen kann?

Antwort1

Wenn Sie sicher sind, dass die Namen keine Leerzeichen enthalten, entfernen Sie die Anführungszeichen und verwenden Sie ( )die Befehlsersetzung:

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

Der Effekt:

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

verwandte Informationen