![유효한 네트워크 주소의 마지막 옥텟을 숫자 2로 바꾸는 방법 [중복]](https://linux55.com/image/100490/%EC%9C%A0%ED%9A%A8%ED%95%9C%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%20%EC%A3%BC%EC%86%8C%EC%9D%98%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EC%98%A5%ED%85%9F%EC%9D%84%20%EC%88%AB%EC%9E%90%202%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%20%5B%EC%A4%91%EB%B3%B5%5D.png)
다음과 같이 가능한/유효한 네트워크 주소가 될 수 있는 문자열이 있다고 가정해 보겠습니다.
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