해당 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;'