owk をぼちぼちいじってます
JSON とかにも使える awk みたいなツール、 owk ですが、ぼちぼちいじってます。
https://github.com/nakamuray/owk
入力に対して map するだけではなく、 fold も出来るようになりました。
複数の map やら fold やらをつなげられるようになりました。
行入力モードで、数値っぽいものははじめから数値として渡すようになりました。
pattern guard を使えるようになりました。関数のパターンの直後に括弧で囲って式を書きます。
バッククオートすることで、演算子を普通の変数として扱えるようになりました。
他。
要するに、以下のようなのが動きます:
$ ps aux | owk '$ ($.11 =~ "chrome") -> put $.4' -r '`+`'
1.1
最初の関数 $ ($.11 =~ "chrome") -> put $.4
で process 名に chrome が含まれる行から メモリ使用量部分を抜き出して、次の =`+=` で合計。
awk で書くと:
$ ps aux | awk '$11 ~ /chrome/ { sum += $4 } END { print sum }'
ですね。 awk より短く書ける。やった。
でも実際は owk -io jsonpp put < input.json
で JSON pretty printer としてくらいしか使ってません。