![将一些字符串存储在数组中](https://linux22.com/image/1127536/%E5%B0%86%E4%B8%80%E4%BA%9B%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%AD%98%E5%82%A8%E5%9C%A8%E6%95%B0%E7%BB%84%E4%B8%AD.png)
我有这个
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