dポイントプレゼントキャンペーン実施中!

お世話になります。

BASHじょうにてPSのRSS合計を算出使用と考え、
例として、以下コマンドを実行しました。
---------------------------
$ ps aux | awk '{sum+=$6;} END{print sum;}'
3113748
---------------------------

合計値が9桁以下等なら良いのですが、
ある程度行くと、例として合計値が以下の様に表示されました。

---------------------------
$ ps aux | awk '{sum+=$6;} END{print sum;}'
5.00383e+09

---------------------------
awkを使用した際の合計値を何とか整数にしたいと考えているのですが
可能なのでしょうか。

恐れ入りますが、知恵をお借り頂けないでしょうか。

よろしくお願いします。

A 回答 (3件)

awk のスクリプトの先頭に BEGIN{OFMT="%d"} を入れるか、


表示の時に print ではなく、printf "%d",sum のように
すれば良いと思います。

OFMT の意味は man awk などで調べてください。
awkが整数値としてどの範囲まで有効かは、ご自分で調べてください。
    • good
    • 0
この回答へのお礼

解答ありがとうございます。

両方とも"%d"なのはなぜだろう。と思ったら、「OFMT」にて指定する内容は
printfでの指定フォーマットなのですね。

提示頂いた両方の方法にて今回行いたかった情報に対し
算出できることを確認しました。

今回は急ぎ、perlにて算出したため、今後の選択しや
他で活用したいと考えます。

> awkが整数値としてどの範囲まで有効か

今まで、桁数を気にするほどの内容は無かったのですが、
「awk」に限らず、常に頭に入れておいたほうが良さそうですね。

ありがとうございました。

お礼日時:2012/02/21 00:11

追伸。


awkもpsも「bash」ではありません。
    • good
    • 0
この回答へのお礼

ご返答頂きありがとうございます。

> awk の実装はちょっと調べないとわからないですが、まあ、その程度しか用意されていないのでしょう。
> PythonやRuby、Perl+Bignum等を使って、多倍長や無限長の整数で計算するのはどうでしょう。

別のものならある程度簡単に出来るのでしょうか。

> 別解としては、awkで多倍長演算するプログラムにすることです。

awkのみの場合、一工夫しないと駄目そうですね。

含めて調べようと思います。

> 追伸。awkもpsも「bash」ではありません。

確かに組み込みコマンド…では無いですよね。
質問の仕方が悪かったようです。

急いで書いたら、誤変換だらけで、コメントも頂けないかな?と思ったのですが、
助かりました。

頂いたキーワード元にがんばってみます。

お礼日時:2012/02/20 22:10

awk の実装はちょっと調べないとわからないですが、まあ、その程度しか用意されていないのでしょう。


PythonやRuby、Perl+Bignum等を使って、多倍長や無限長の整数で計算するのはどうでしょう。

別解としては、awkで多倍長演算するプログラムにすることです。
    • good
    • 0
この回答へのお礼

解答ありがとうございます。

取り合えず、今回必要な桁数は「Perl」のみで出来そうです。
※ まったくといってさわったことは無いのですが。

PythonやRubyでの算出方法も今後の課題として試してみたいと思います。

ありがとうございました。

お礼日時:2012/02/20 23:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!