쉘스크립트 - IP 주소를 다른 IP 주소로 바꾸기

wegaia의 이미지

안녕하세요.
본쉘스크립트에서 $IP1 이라는 변수에 "ABC 192.168.0.45(myip)" 와 같이 값이 들어 있을 경우
192.168.0.45 라는 값을 입력받은 다른 ip 값으로 바꾸고 싶은데 잘 안되네요.
이때 꼭 값이 192.168.0.45 일수도 있고 다른값일수도 있습니다. 즉, 미리 알수는 없고 IP주소라는것만
알수 있습니다.

temp_var=${IP1//[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}/$NewIp}

처럼해봤는데 temp_var 의 값이 여전히 변경이 되질 않네요.
[.] 부분을 \. 로 바꾸어도 마찬가지네요..
이리저리 해도 같은 결과라서 도움을 청합니다..
미리 감사드립니다..

wegaia의 이미지

192.168.0.55 처럼 중간에 1자리 숫자가 들어갈 경우를 처리 못하는듯 싶습니다.
[0-9][0-9]* 숫자한자리+숫자한자리가 0개 이상이란 의미 아닌가요?
sed에서는 그렇게 되는듯 싶은데 본쉘에선 아닌것인지..
[0-9]\{1,3\} 도 같은 결과네요..

gorinux의 이미지

.
.

#VAR="ABC 192.168.0.45(myip)"
#IP="121.132.216.86"
#echo $VAR
ABC 192.168.0.45(myip)
#echo $VAR | sed 's/\(\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\)/'"$IP"'/g'
ABC 121.132.216.86(myip)
#echo $VAR | sed 's/\([0-9]\+\.\)\+[0-9]\+/'"$IP"'/g'
ABC 121.132.216.86(myip)
#echo $VAR | sed 's/\([0-9]\{1,3\}\.\)\{1,3\}[0-9]\{1,3\}/'"$IP"'/g'
ABC 121.132.216.86(myip)
#echo ${VAR/[0-9]*.*[0-9]/$IP}
ABC 121.132.216.86(myip)