memo

2014-01-16

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 としてくらいしか使ってません。