Grep

grep 的 IP 範圍?

  • August 11, 2018

在本地 IP 地址為 10.0.0.159 的 RHEL 7 機器上,以下命令列印出 IP 10.0.0.159

$ echo "$(ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | \
  grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')""(rw,sync)" 

為了列印出“10.0.0.0/8”,命令必須更改為什麼?

注意: ifconfig是一個已棄用的 cmd。你應該使用 cmds。在 iproute2 包中。下面我展示瞭如何使用ip替換工具來完成你想要的。


ifconfig我建議不要這樣做,而是使用該ip命令。

IP CIDR

此表單以 CIDR 表示法顯示 IP 地址:

$ ip addr list eth0 | awk '/inet.*brd/ {print $2}'
10.0.2.15/24

-or-

$ ip a l eth0 | awk '/inet.*brd/ {print $2}'
10.0.2.15/24

網路 CIDR

此表單以 CIDR 表示法顯示網路地址:

$ ip route show | awk '/eth0.*scope/ {print $1}'
10.0.2.0/24

ipcalc

您還可以使用ipcalc命令來操作上述地址以計算其他格式。例如:

$ ipcalc -n $(ip a l eth0 | awk '/inet.*brd/ {print $2}')
NETWORK=10.0.2.0

$ ipcalc -p $(ip a l eth0 | awk '/inet.*brd/ {print $2}')
PREFIX=24

有了ipcalc它,您可以更簡單地形成您想要的任何變體,而不必做很多sed&awk來解析通常過於復雜的文本。

引用自:https://unix.stackexchange.com/questions/461927