notebook

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

command

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

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

スクリプトや設定ファイルをテンプレート化して環境変数を埋め込むenvsubstコマンド

簡単なスクリプトや設定ファイルなど、環境変数を埋め込んたファイルを生成したいみたいなパターンのときにenvsubstコマンドが使えます 今まで知らなかったことがもったいない ということでメモ残しておきます インストール gettextを入れると使えるようにな…

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…

git管理外のファイル間やコマンド実行結果間でdiffを見やすくする

git管理外のファイル間もしくはコマンド実行結果(標準入力)間での差分表示 git管理のファイルであればデフォルトでもそれなりのdiff表示をしてくれるけどdiffコマンドで比較した場合どうするのが良いのかと思って調べた gitでのdiff表示に慣れてしまったた…

jqでエラーを無視する

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

jqで配列に値を追加する

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

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

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

grep,awk,nkf,jq,perlでバッファしないようにする

grep,awk,nkf,jq,perlでバッファしないようにする ログをtailして整形して流す際にどっかで出力をバッファしてしまって本来流れている部分全てが表示されずに困ってしまうことがあったので調べてみました grep おなじみgrep grep --line-buffered hoge awk …