다음 명령줄을 사용하여 현재 IP 주소를 읽습니다. 그런 다음 마지막 값을 0/24로 바꿔야 합니다. 현재 IP는 192.168.178.1입니다. 192.168.178.0/24의 var 값을 바꿔야 합니다.
귀하의 지원과 안부 인사에 감사드립니다!
varip=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/' )
답변1
마지막으로 다음 sed 코드를 사용하십시오.
sed 's:[^.]*$:0/24:'
"."을 포함하지 않는 마지막 부분 문자열을 "0/24"로 바꾸는 방식으로 작동합니다. s
이스케이프되지 않은 '/'를 사용할 수 있도록 sed 명령의 구분 기호로 ':'을 사용하는 방법에 유의하세요 .
아니면 항상 sed를 사용하세요 :)
ip addr | sed -rn '/state UP/{n;n;s:^ *[^ ]* *([^ ]*).*:\1:;s:[^.]*$:0/24:p}'
답변2
이 시도:
ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/' | sed 's/\.[0-9]*$/\.0\/24/'
하지만 꼭 그럴 필요는 없습니다 . cut
다음으로 바꾸세요 .sed
ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | sed 's/\.[0-9]*\//\.0\//'
이 명령은 동일한 출력을 반환합니다.
그리고 그것은 필요하지 않습니다 . tail
또한 다음으로 바꾸십시오 .sed
ip addr | grep 'state UP' -A2 | awk '{print $2}' | sed '$!d;s/\.[0-9]*\//\.0\//'
하지만최단 경로사용하는 것입니다 hostname
:
hostname -I | tr -d " " | sed 's/[0-9]*$/0\/24/'
출력은 동일합니다.
답변3
Your-IP-Adress/24를 얻으려면 다음 명령을 사용하십시오.
ip addr | grep inet | egrep /24 | awk '{print $2}'
답변4
그냥 awk를 사용하세요:
ip a | awk '/state UP/{nr[NR+2]}; NR in nr {gsub(/\.([0-9]+)\/([0-9]+)/,".0/24"); print $2}'