将一些字符串存储在数组中

将一些字符串存储在数组中

我有这个

sCSISmart1 陷阱类型   
    企业旋风                        
    变量 {cycHostAdapterNumber,cycHostAdapterID,cycManagerID}          
    描述                             
    “SNMP 代理已启动。”                       
    --#TYPE “SNMP 代理已启动。”                    
    --#SUMMARY“SNMP 代理已启动”                    
    --#参数{}                           
    --#严重性信息                       
    --#TIMEINDEX 100                  
    --# 状态运行                    
    --#帮助 “scsismrt.hlp”                          
    --#帮助标签 101                    
::= 101      

我想做的事

一些命令将每个名称复制VARIABLE到名为的数组中var

所以上面的输出

回显“${var[0]}”
cycHostAdapter编号

回显“${var[1]}”
cyc主机适配器ID

回显“${var[2]}”
周期管理器ID

另一个例子

sCSISmart1 陷阱类型   
    企业旋风                        
    变量 { scellNameDateTime,                      
                     scellSW组件,                     
                     scellE代码,                  
                     细胞CAC,                     
                     }                           
    描述                             
    “SNMP 代理已启动。”                       
    --#TYPE “SNMP 代理已启动。”                    
    --#SUMMARY“SNMP 代理已启动”                    
    --#参数{}                           
    --#严重性信息                       
    --#TIMEINDEX 100                  
    --# 状态运行                    
    --#帮助 “scsismrt.hlp”                          
    --#帮助标签 101                    
::= 101      

上述输出

回显“${var[0]}”
单元格名称日期时间

回显“${var[1]}”
scellSW组件

回显“${var[2]}”
细胞E代码

回显“${var[3]}”
细胞CAC

回显“${var[4]}”
细胞EIP

另一个例子

sCSISmart1 陷阱类型   
    企业旋风                        
    变量 {                    
                     细胞EIP
               }                           
    描述                             
    “SNMP 代理已启动。”                       
    --#TYPE “SNMP 代理已启动。”                    
    --#SUMMARY“SNMP 代理已启动”                    
    --#参数{}                           
    --#严重性信息                       
    --#TIMEINDEX 100                  
    --# 状态运行                    
    --#帮助 “scsismrt.hlp”                          
    --#帮助标签 101                    
::= 101      

上述输出

回显“${var[0]}”
细胞EIP

我已尝试过(所有这些都将所有内容存储到prvar

prvar="$(awk'/VARIABLES/,/}/{gsub("VARIABLES"," "); 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

相关内容