일부 문자열을 배열에 저장하기

일부 문자열을 배열에 저장하기

나는 이것을 가지고있다

sCSISmart1 트랩 유형   
    엔터프라이즈 사이클론                        
    변수 {cycHostAdapterNumber, cycHostAdapterID, cycManagerID}          
    설명                             
    "SNMP 에이전트가 작동 중입니다."                       
    --#TYPE "SNMP 에이전트가 작동 중입니다."                    
    --#SUMMARY "SNMP 에이전트가 작동 중입니다."                    
    --#인수 {}                           
    --#심각도 정보                       
    --#TIMEINDEX 100                  
    --#국가 운영                    
    --#HELP "scsismrt.hlp"                          
    --#도움말태그 101                    
::= 101      

내가 하고 싶은 일

VARIABLE각 이름을 이름이 지정된 배열에 복사하는 일부 명령var

그래서 위의 출력

에코 "${var[0]}"
cycHostAdapter번호

에코 "${var[1]}"
cycHostAdapterID

에코 "${var[2]}"
cycManagerID

다른 예시

sCSISmart1 트랩 유형   
    엔터프라이즈 사이클론                        
    변수 { scellNameDateTime,                      
                     scellSW컴포넌트,                     
                     셀E코드,                  
                     셀CAC,                     
                     scellEIP}                           
    설명                             
    "SNMP 에이전트가 작동 중입니다."                       
    --#TYPE "SNMP 에이전트가 작동 중입니다."                    
    --#SUMMARY "SNMP 에이전트가 작동 중입니다."                    
    --#인수 {}                           
    --#심각도 정보                       
    --#TIMEINDEX 100                  
    --#국가 운영                    
    --#HELP "scsismrt.hlp"                          
    --#도움말태그 101                    
::= 101      

위의 출력

에코 "${var[0]}"
scellName날짜시간

에코 "${var[1]}"
scellSWComponent

에코 "${var[2]}"
scellECode

에코 "${var[3]}"
scellCAC

에코 "${var[4]}"
scellEIP

다른 예시

sCSISmart1 트랩 유형   
    엔터프라이즈 사이클론                        
    변수 {                    
                     scellEIP
               }                           
    설명                             
    "SNMP 에이전트가 작동 중입니다."                       
    --#TYPE "SNMP 에이전트가 작동 중입니다."                    
    --#SUMMARY "SNMP 에이전트가 작동 중입니다."                    
    --#인수 {}                           
    --#심각도 정보                       
    --#TIMEINDEX 100                  
    --#국가 운영                    
    --#HELP "scsismrt.hlp"                          
    --#도움말태그 101                    
::= 101      

위의 출력

에코 "${var[0]}"
scellEIP

내가 시도한 것은 (이 모든 것은 모든 것을 에 저장하는 것입니다 prvar)

prvar="$(awk '/VARIABLES/,/}/ {gsub("변수"," "); gsub("}"," "); gsub("{"," ");gsub("," ," ");인쇄}' 임시1)"

어떤 아이디어라도 어떻게 달성할 수 있나요?

답변1

이름에 공백이 없다고 확신하는 경우 따옴표를 제거하고 ( )명령 대체를 사용하십시오.

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

그 효과:

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

관련 정보