我正在尝试使用以下命令将数字总和提取到文件(wa_cidr)中的变量(cwr):
cwr=$(grep -E "^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$" /tmp/wa_cidr | awk -F '/' '`{n += 2**(32 - $NF)}` END {print n}')
但是,输出为空。
如果我改变部分...
{n += 2**(32 - $NF)}
至...
{n += (32 - $NF)}
我得到了写入 cwr 变量的有效结果。
看来我无法在 AWK 中使用 2**X 或 2^X 来实现 (32 - $NF) 的功能。
如果我在命令行上执行此操作,例如使用...
$ echo $(2**5)
没有问题,结果是 32。
我已经尝试了公式的许多变体(括号等),但似乎没有任何效果。
怎么了?可以用另一种方式完成吗?
谢谢,索伦