在数组中存储一些字符串
我有这个
sCSISmart1 TRAP-TYPE 企业旋风 VARIABLES {cycHostAdapterNumber,cycHostAdapterID,cycManagerID} 描述 “SNMP代理已启动。” - #TYPE“SNMP代理已启动。” - #SUMMARY“SNMP代理已启动” - #ARGUMENTS {} - #SEVERITY INFORMATIONAL - #TIMEINDEX 100 - #STATE OPERATIONAL - #HELP“scsismrt.hlp” - #HELPTAG 101 :: = 101
我想做的事
有些命令将VARIABLE
每个名称复制到名为var
的数组中
所以上面的输出
echo“$ {var [0]}” cycHostAdapterNumber echo“$ {var [1]}” cycHostAdapterID echo“$ {var [2]}” cycManagerID
另一个例子
sCSISmart1 TRAP-TYPE 企业旋风 VARIABLES {scellNameDateTime, scellSWComponent, scellECode, scellCAC, scellEIP} 描述 “SNMP代理已启动。” - #TYPE“SNMP代理已启动。” - #SUMMARY“SNMP代理已启动” - #ARGUMENTS {} - #SEVERITY INFORMATIONAL - #TIMEINDEX 100 - #STATE OPERATIONAL - #HELP“scsismrt.hlp” - #HELPTAG 101 :: = 101
输出如上
echo“$ {var [0]}” scellNameDateTime echo“$ {var [1]}” scellSWComponent echo“$ {var [2]}” scellECode echo“$ {var [3]}” scellCAC echo“$ {var [4]}” scellEIP
另一个例子
sCSISmart1 TRAP-TYPE 企业旋风 VARIABLES { scellEIP } 描述 “SNMP代理已启动。” - #TYPE“SNMP代理已启动。” - #SUMMARY“SNMP代理已启动” - #ARGUMENTS {} - #SEVERITY INFORMATIONAL - #TIMEINDEX 100 - #STATE OPERATIONAL - #HELP“scsismrt.hlp” - #HELPTAG 101 :: = 101
输出如上
echo“$ {var [0]}” scellEIP
我尝试过的(所有这一切都是将所有内容存储到prvar
)
prvar =“$(awk'/ VARIABLES /,/} / {gsub(”VARIABLES“,”“); gsub(”}“,”“); gsub(”{“,”“); gsub(”,“ ,“”); print}'temp1)“
任何想法我怎样才能做到这一点?
如果您确定名称中没有空格,请删除引号并在命令替换周围使用( )
:
prvar=($(awk ... temp1))
效果:
$ prvar=( $(awk '/VARIABLES/,/}/ {gsub("VARIABLES"," "); gsub("}"," "); gsub("{"," ");gsub(","," ");print}' temp1) ) $ echo ${prvar[@]} ${#prvar[@]} cycHostAdapterNumber cycHostAdapterID cycManagerID 3