notebook

都内でWEB系エンジニアやってます。

jq

jqで任意の件数だけ出力する

簡単にできるやろと思ったらそんなことなかったのでメモしておく 件数指定する 単純に件数を指定するだけであればlimitでOK $ echo '[1,2,3,4,5,6,7,8,9,10]' | jq 'limit(3; .[])' 1 2 3 これは簡単 絞り込みや並び替え後に件数指定する 上記のような単純な…

jqのreduceを使ってカジュアルに集計する

今回はjqのreduceを使ってさくさく集計を行ってみます サンプル hoge.json [ { "value": 1, "label": "hoge" }, { "value": 3, "label": "fuga" }, { "value": 2, "label": "hoge" }, { "value": 2, "label": "hoge" } ] サンプルのjson APIのレスポンスなど…

jqで条件にマッチしないデータをnotとselectで除外する

jqを使っていて「特定の文字列を含んでない」レコードをselectしたいみたいなケースの話 感覚的には条件式に!をつけて否定したものを条件として使いたかったがそういう書き方はできない 調べてみたら次のスレッドで言及されていた jq - How to filter a json…

jqでエラーを無視する

最近までまったく知らなかったのですがここまでできるのか!という感じだったので残しておく ?オペレータ tryのショートハンド、式の実行を行いエラーの場合は無視してくれる テキストファイルからjsonの値だけ扱う -Rオプションでrawテキストから読み込むこ…

jqで配列に値を追加する

jqで配列に対して値を追加したい場合 pushなどの関数は提供されていないため配列の添字に対して|=で値をアサインする方法で同じようなことを実現できる 末尾の添字を取得するためには配列の数を変数化してあとで参照させてあげれば良い 式の結果をexp as $ho…

jqで特定の値を書き換える

たとえば本番のログから特定のキーだけデータを変えて(マスクして)保存したいみたいなとき 普通にやればsedやawkで頑張ってできそうですがjqであればサクッとできてしまいます 今回下記のサンプルjsonを用意しました sample.json { "hoge": "fuga", "foo":…