ちょっとした集計

テキストファイルから数字を抜き出してそれを合計したいことってありますよね。(ね)
第1歩としてはよけいな文字を検索して空文字とかカンマとかタブに置換えしてEXCELに貼付けてSUM(A:A)とかで合計を出す、ちょっとイロイロ覚えてくると正規表現とかを使って数字だけ抜き出してEXCELへとかできるようになります。
そのEXCELをいちいち起動するのが面倒で、何か良い手はないかと思っておりました。
そしたらばまさにそのものズバリのモノがありました。AWK。

くそー、Safariメモり喰いまくりやがってChromeはそうでもなさそうだぞ、とアクティビティモニタを見るとChromeとその仲間達が結構おりまして。合計したらどのくらいになるのかと(以上導入の物語)。


Safari:実メモリ591M、Chrome113M、、、ん。
こんなに居た。

上図のようにChrome関連をshift+クリックで選択して、メモ帳的なものに貼付けると

11349 Google Chrome Renderer takeshi 0.0 6 30.7 MB Intel 30.4 MB
91981 Google Chrome Renderer takeshi 0.0 6 41.4 MB Intel 35.5 MB
11350 Google Chrome Renderer takeshi 0.0 6 42.6 MB Intel 56.1 MB
11569 Google Chrome Renderer takeshi 0.0 7 46.5 MB Intel 42.4 MB
11354 Google Chrome Renderer takeshi 0.0 6 43.6 MB Intel 44.6 MB
11347 Google Chrome Renderer takeshi 0.1 6 127.8 MB Intel 132.7 MB
84951 Google Chrome Renderer takeshi 0.0 6 58.4 MB Intel 55.4 MB
11351 Google Chrome Renderer takeshi 0.0 6 22.7 MB Intel 43.1 MB
11355 Google Chrome Renderer takeshi 0.0 6 24.3 MB Intel 43.8 MB
11348 Google Chrome Renderer takeshi 0.0 6 30.8 MB Intel 33.3 MB
11352 Google Chrome Renderer takeshi 0.0 6 37.7 MB Intel 41.2 MB
11340 Google Chrome takeshi 2.3 21 113.9 MB Intel 239.6 MB

改行文字はLFで適当に保存します(例えばchrome.txt)。
そしてAWKの出番。

awk 'BEGIN{c=0} {c+=$8} END{print c}' chrome.txt
→506.5

これだけ。
BEGIN{}の中に初期値、その次の{}の中に各行で行う処理、END{}に後処理、という書式のようです。
恐らくタブコードとかで勝手に区切ってくれて、$8は8番目のフィールドでメモリ使用量。変数cに積算していって、最後にprintで出力します。
どうやら最後の行はタブの数が違ったらしく(なんで)、計算されませんでしたが、506.5に113.9を足して620.4MB。十分召し上がっていたご様子です。。

AWK、名前だけは知っていましたが、こういう時に使うのかと感動しました。
温故知新とでも申しましょうか。もっと使えるようになりたいものです。

参考サイト
awkの使い方
http://www.not-enough.org/abe/manual/unix2-au99/awk1.html
AWKリファレンス
http://shellscript.sunone.me/awk.html


ちょっとした集計” への1件のコメント
  1. kodaira より:

    hello

  2. kodaira より:

    teest

1 Ping/トラックバック のために "ちょっとした集計"
  1. ADHD Symptoms より:

    ADHD Symptoms…

    […]プログラミング » temray[…]…

コメントを残す

メールアドレスが公開されることはありません。

55 − 45 =