数値の合計を取るのにJSONとみなせる
以下のような数値が行毎に出力されたファイルがあり。この合計を出す時に
00data.txt
1 2 3 4 5 6 7 8 9 10
(複数の列がある中でcutなどで合計を求めたい列だけを取り出してからのsumの場合もある)
以前までは真面目にpythonのワンライナーを書いていた。他の方法を調べる気も起きなかったので。ちょっと長いし面倒。
$ 00data.txt | python -c 'import sys; print(sum(float(line.strip()) for line in sys.stdin))' 55
JSON
数値もJSONなのでJSONとして扱えば楽だった。jqfpyで楽に書ける。
--slurp
を付けてあげればlistになるので sum()
が使える。
$ cat 00data.txt | jqfpy --slurp 'sum(get())' 55
もちろん、jqにもそのようなオペレーターはあるはずで。調べてみたらadd
があった。
$ cat 00data.txt | jq --slurp 'add' 55