将最后一个八位字节与IP地址隔离并将其放入变量中

bla*_*ire 2 shell awk sed ip-address

以下脚本:

IP=`ifconfig en0 inet | grep inet | sed 's/.*inet *//; s/ .*//'`
Run Code Online (Sandbox Code Playgroud)

ipconfig命令中隔离IP地址并将其放入变量中$IP.我现在如何从上述IP地址中隔离最后一个八位字节并将其放入第二个变量中 - $CN

例如:

$ IP = 129.66.128.72 $ CN = 72或$ IP = 129.66.128.133 $ CN = 133 ...

Dan*_*spa 12

使用"cut"命令.分隔符:

IP=129.66.128.72
CN=`echo $IP | cut -d . -f 4`
Run Code Online (Sandbox Code Playgroud)

CN现在包含最后一个八位字节.


anu*_*ava 7

在BASH中你可以使用:

ip='129.66.128.72'
cn="${ip##*.}"
echo $cn
72
Run Code Online (Sandbox Code Playgroud)

或者使用sed作为非BASH:

cn=`echo "$ip" | sed 's/^.*\.\([^.]*\)$/\1/'`
echo $cn
72
Run Code Online (Sandbox Code Playgroud)

运用 awk

cn=`echo "$ip" | awk -F '\\.' '{print $NF}'`
Run Code Online (Sandbox Code Playgroud)

  • 不,[`$(...)`](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_03)符合POSIX标准. (2认同)

kon*_*box 2

捷径:

read IP CN < <(exec ifconfig en0 | awk '/inet / { t = $2; sub(/.*[.]/, "", t); print $2, t }')
Run Code Online (Sandbox Code Playgroud)