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