以下脚本:
IP=`ifconfig en0 inet | grep inet | sed 's/.*inet *//; s/ .*//'`
将IP地址与ipconfig
命令隔离开来,并将其放入变量$IP
中。
我现在如何从上述IP地址中隔离最后一个八位字节并将其放入第二个变量 - $CN
例如:
$ IP = 129.66.128.72 $ CN = 72或$ IP = 129.66.128.133 $ CN = 133 ...
答案 0 :(得分:11)
使用" cut"命令用。定界符:
IP=129.66.128.72
CN=`echo $IP | cut -d . -f 4`
CN现在包含最后一个八位字节。
答案 1 :(得分:6)
在BASH中你可以使用:
ip='129.66.128.72'
cn="${ip##*.}"
echo $cn
72
或者使用sed作为非BASH:
cn=`echo "$ip" | sed 's/^.*\.\([^.]*\)$/\1/'`
echo $cn
72
使用awk
cn=`echo "$ip" | awk -F '\\.' '{print $NF}'`
答案 2 :(得分:1)
我不会使用ifconfig
来获取IP,而是使用此解决方案,因为无论接口如何,它都会获得上网所需的IP。
IP=$(ip route get 8.8.8.8 | awk '{print $NF;exit}')
并获得最后一个八位字节:
last=$(awk -F. '{print $NF}' <<< $IP)
或直接获取最后一个八位字节:
last=$(ip route get 8.8.8.8 | awk -F. '{print $NF;exit}')
答案 3 :(得分:0)
快捷方式:
read IP CN < <(exec ifconfig en0 | awk '/inet / { t = $2; sub(/.*[.]/, "", t); print $2, t }')