awkで文字列にシングルクォーテーションやダブルクォーテーションを付けて出力する
saratogax
サラトガ牧場
以下は特定のタイミングの nginx の pod のリソース。
kubectl top pods した結果で、CPU と memory のリソースがリスト化されている。
NAME CPU(cores) MEMORY(bytes)
nginx-cb8bbf5f6-9mpx2 4m 651Mi
nginx-cb8bbf5f6-ccwvf 3m 641Mi
nginx-cb8bbf5f6-q9trz 3m 636Mi
nginx-cb8bbf5f6-zzsbx 4m 641Mi
この程度ならパッと見で CPU と memory の合算も可能。
ただ、数が多いと大変ですよね。
今回は、このようなテキスト出力されたものの合計値を aws で手軽に計算します。
冒頭のリストが出力されているファイルを「log.txt」とします。
CPU は 2 列目なので、以下のように 2 列目を合計して単位の「m」を追記すれば OK ですね。
$ awk '{t += $2} END {print t"m"}' log.txt
14m
メモリも同じ考え方でいけます。
$ awk '{t += $3} END {print t"Mi"}' test.log
2569Mi
個別にやるのは面倒なので、両方一緒に計算して表示させたいですよね。
$ awk '{c += $2; m += $3} END {print c"m",m"Mi"}' test.log
14m 2569Mi
スプレッドや Excel に貼り付けて計算させてもいいですが、ちょっとしたものならコマンドラインでサクッとやってしまいたいですね。
今回は aws が都合のいいように、ヘッダ行の値や各明細の単位を無視して計算してくれました。
最初、4m とか 651Mi とか単位がついていると無理かなと思ったのですけどね・・・。