IP 경로를 얻으려면 bash에서 인터페이스의 서브넷을 가져옵니다.

IP 경로를 얻으려면 bash에서 인터페이스의 서브넷을 가져옵니다.

해당 ip addr명령에서 유형의 서브넷 주소를 얻었 192.168.0.1/24지만 이 ip route명령에는 유형의 서브넷 주소가 필요합니다 192.168.0.0/24.

sed -E 's/(?<=\d.)1(?=\/)/0/g'다음을 사용하여 마지막 "1"을 "0"으로 변경하려고 하면 오류가 발생합니다.sed: -e expression #1, char 21: Invalid preceding regular expression

답변1

문제는 sed가 PCRE 구문을 지원하지 않는다는 것입니다. 이 GNU sed 스니펫을 사용해 보세요:

sed -r 's:([0-9]\.)[0-9]{1,3}/:\10/:g'

-r허용되지 않으면 를 사용 하세요 -E.

답변2

@seshoumara가 지적했듯이 sed는 앞뒤를 지원하지 않기 때문에 sed 대신 Perl을 사용하게 되었습니다.

ip -o -f inet addr show eth0 | awk '/scope global/ {print $4}' | perl -ne 's/(?<=\d.)\d{1,3}(?=\/)/0/g; print;'

관련 정보