# Calculate network address from IP and prefix len # Tobias Waldekranz, 2017 # # $ echo "192.168.2.232/24" | awk -f ipcalc.awk # 192.168.2.0/24 # # $ echo "192.168.2.232.24" | awk -f ipcalc.awk # 192.168.2.0/24 # # $ echo "192.168.2.232 24" | awk -f ipcalc.awk # 192.168.2.0/24 # BEGIN { FS="[. /]" } { ip = lshift($1, 24) + lshift($2, 16) + lshift($3, 8) + $4; net = lshift(rshift(ip, 32 - $5), 32 - $5); printf("%d.%d.%d.%d/%d\n", and(rshift(net, 24), 0xff), and(rshift(net, 16), 0xff), and(rshift(net, 8), 0xff), and(net, 0xff), $5); }