hpuxからキロバイトを取得するには、21858717696を1024で除算する必要がありますが、次のコマンドを使用すると機能しません。
echo 21858717696 | awk '{print $1/1024}'
出力:
2.13464e+07
AIX では、次のコマンドを使用でき、機能します。
echo 21858717696 | awk '{print $1/1024}' | bc -l | awk '{printf("%.0f\n", $1)}'
出力:
21346404
AIX 方式は HPUX では機能しません。 HPUXで同じ結果を得るにはどうすればよいですか?
答え1
HP-UXにはPerlが必要です。
echo 21858717696|perl -ne 'printf "%.0f\n",$_/1024'
21346404
答え2
これが私がすることですdc <<< "21858717696 1024/ p"
dc
ほとんどすべてのUnixにデフォルトでインストールされていると思います。 1991年から私が使っていたすべてが含まれています。- 私はプロセスです。
- 正確で正確な結果を提供します。
シェルがこれを行わない場合は、<<<
次のようにします。
echo "21858717696 1024/ p" | dc
答え3
すでに以下を使用しているのでbc
:
$ printf '%s/1024\n' 21858717696 | bc
21346404
または
$ echo '21858717696/1024' | bc
21346404
bc
または計算を実行できる他の組み合わせです。scale
必要な小数点以下の桁数(デフォルトでは0)を設定するには、次の割り当てを含めます。
$ printf '%s\n' 'scale=4' '21858717696/1024' | bc
21346404.0000
最も重要なのは、bc
実際の計算を実行することです。
答え4
なぜawkの結果を印刷しないのですか? 2番目のawkは必要ありません。
$ echo 21858717696 | awk '{printf "%.0f\n", $1/1024}'
21346404
私が欠けていない場合は、これは2番目のコマンドとまったく同じです。
$ echo 21858717696 | awk '{print $1/1024}' | bc -l | awk '{printf("%.0f\n", $1)}'
21346404
私のLinuxシステムでは、より大きな数字とbusybox awkを介してのみこれを再現できます。
$ echo 12321858717696000000000 | ./awk '{print $1/1024}'
1.20331e+19
しかし、busybox awkを使用しても期待printf
どおりに機能します。
$ echo 12321858717696000000000 | ./awk '{printf "%.0f\n",$1/1024}'
12033065153999998976