2016-12-01 1 views
0

나는 이것에 대해 꽤 많은 게시물을 발견했지만 문제를 해결하기 위해 조각을 조합 할 수 없었습니다. array2의 i 번째 요소의 처음 5 개 문자가 처음 5 일치하는 경우 좀 더 특별히두 배의 배쉬 배열 내에서 패턴이 일치합니다.

array3=(adir anicedir) 

같은 세 번째 배열을하고 싶은

array1=(adir bdir anicedir) 
array2=(adir anice) 

: 그래서 두 배열이 있다고 가정 해 문자가 array1이면 array2[i]을 대체하십시오. array1[i]

답변

2

bash은 데이터 처리 언어가 아니기 때문에 특별히 짧은 것은 없습니다. 루프를 사용해야합니다. ==의 우측을 인용

array1=(adir bdir anicedir) 
array2=(adir anice) 
array3=() 

for val2 in "${array2[@]}"; do 
    for val1 in "${array1[@]}"; do 
     if [[ ${val1:0:5} == "${val2:0:5}" ]]; then 
      array3+=("$val1") 
      break 
     fi 
    done 
done 

리터럴 문자열 비교 아닌 패턴 매칭이 수행되도록 보장한다.

+0

'echo $ {array3 [@]}'는 출력을하지 않습니다 ... – Manfredo

+0

그래도 여전히 출력이 나오지 않습니다. 'echo $ {array3 [@]}'는 정확한 결과를 제공합니까? – Manfredo

+0

이제'echo $ {array3 [@]} adir anice'를 얻었지만'echo $ {array3 [@]} adir anicedir'이어야합니다. 어쨌든 이미 도움이된다. 나는 그것을 알아 내려고 노력할 것이다. 감사합니다 – Manfredo

관련 문제