유효한 네트워크 주소의 마지막 옥텟을 숫자 2로 바꾸는 방법 [중복]

유효한 네트워크 주소의 마지막 옥텟을 숫자 2로 바꾸는 방법 [중복]

다음과 같이 가능한/유효한 네트워크 주소가 될 수 있는 문자열이 있다고 가정해 보겠습니다.

STR="192.168.1.0/24"

내가 하고 싶은 것은 마지막 옥텟(이 경우 0/24, 그러나 임의의 숫자일 수 있음)을 숫자 2로 바꾸는 것입니다. 그러나 마지막 옥텟이 무엇일 수 있는지 모르겠습니다(새 값이 인쇄되지 않습니다). ), 따라서 다음과 같이 변경합니다.

192.168.1.0/24

도착하다:

192.168.1.2

네트워크 주소가 무엇이든 마지막 옥텟을 "2"로 바꾸고 싶습니다.

참고: 테스트 중인 모든 문자열은 유효한 네트워크 주소로 간주되므로 문자열이 유효한 네트워크 주소인지 확인하는 것은 중요하지 않습니다.

답변1

터미널에서는 다음과 같이 작동합니다.

echo "192.168.1.0/24" | sed  -n 's/0.24/2/p' 

스크립트에서는 다음과 같이 작동합니다.

str="192.168.1.0/24"
newstr=$(sed  -n 's/0.24/2/p' <<<$str)

IP 주소의 마지막 숫자를 바꾸려면:

str="192.111.12.20"
newstr=$(awk -F"." '{print $1"."$2"."$3".2"}'<<<$str)
echo $newstr

관련 정보