0

次のコマンドを使用して、数値の合計をファイル (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 です。

数式 (括弧など) で多くのバリエーションを試しましたが、何も機能していないようです。

なにが問題ですか?別の方法で行うことはできますか?

ありがとう、ソーレン

4

2 に答える 2