タグ

jqに関するopparaのブックマーク (12)

  • パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)

    jq(https://stedolan.github.io/jq/)の紹介では、「JSON処理のワンライナー〈一行野郎〉としてめちゃくちゃ便利!」とアピールするのが定番です。もちろんそれは当で、「めちゃくちゃ便利!」です。が、実は jq は、ワンライナー記述にとどまらない、かなり格的なプログラミング言語です。 JSON処理のためのDSL〈Domain Specific Language | 領域特化言語〉なので、汎用言語ではありません。しかし、汎用言語が備えている言語機能の一部(関数定義、モジュールシステムなど)を jq も持っています。また jq は、独特で楽しいプログラミング・パラダイム -- “パイプライン指向”に基づいて設計されています。 この記事では、ワンライナーを超えた jq の使い方と、プログラミング言語としての jq の特徴を紹介します。長い記事になってしまったので、一

    パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • jq で JSON を LTSV に変換する - tkuchikiの日記

    結論 [ {"foo": "bar1", "hoge": "piyo1"}, {"foo": "bar2", "hoge": "piyo2"}, {"foo": "bar3", "hoge": "piyo3"} ] という json(test.json とする) があるときに、 $ cat test.json | jq -r '.[] | to_entries | map("\(.key):\(.value)") | join("\t")' と実行すると、 foo:bar1 hoge:piyo1 foo:bar2 hoge:piyo2 foo:bar3 hoge:piyo3 と出力されます。 解説 分解して説明します。 to_entries で key, value という key を持った hash の array に変換します。 $ cat test.json | jq -r '.[]

    jq で JSON を LTSV に変換する - tkuchikiの日記
  • jqコマンドで集計 group by, max, sum, count

    jq コマンドで集計(最大、合計、数、平均、並び替え)をする方法を紹介します。jq のバージョンは 1.6。 以前書いた jq コマンドの基的な使い方の続きです。 目次 サンプルの JSON 最大値(max_by) 合計値(add) 配列の数(length) グループごとの最大値 (group_by, max_by) グループごとの合計値 (group_by, add) グループごとの配列の数 (group_by, length) グループごとの平均 (group_by, add/length) 集計後の並び替え (sort_by) 絞り込んでから集計 (select) reduce を使った集計 サンプルの JSON サンプルとして以下の JSON を使います。注文データのイメージです。ターミナルで以下のコマンドを実行して $JSON という変数に入れておきます。 JSON=$(cat

    jqコマンドで集計 group by, max, sum, count
    oppara
    oppara 2022/01/05
  • jqのGo実装 gojq を作りました! ― スタックマシン型インタープリタによるイテレータセマンティクスの実装 - プログラムモグモグ

    jqはとても便利なコマンドです。 JSONを返すAPIを実装するときや、SaaSのAPIから特定の情報を抜き出してシェル変数に代入するときなど、web開発や運用には欠かせないツールとなっています。 しかし、私にとってjqのクエリを一発で書くのは容易ではなく、思い通りの出力が得られないことがよくありました。 難しいエラーメッセージに悩まされて、jqで書くのを諦めて別の言語で書き直すこともありました。 jqの十八番と思える場面で使いこなせないのは、なかなか悔しいものがあります。 ツールを使うのが難しいなら、同じものを作ってしまえばよいのです。 jqの全ての機能を実装する jqを言語としてきちんと書けるようになる jqを完全に理解する jqの全ての機能を自分で実装してしまえば、jqがどういうものか、クエリがどのように処理されるのか、詳しくなれるはずです。 jqを得意な言語と言えるようになって、ク

    jqのGo実装 gojq を作りました! ― スタックマシン型インタープリタによるイテレータセマンティクスの実装 - プログラムモグモグ
  • 軽量JSONパーサー『jq』のドキュメント:『jq Manual』をざっくり日本語訳してみました | DevelopersIO

    jq Manual jqで簡単JSON加工 | Developers.IO jqコマンドが実は高性能すぎてビビッた話 - beatsync.net JSONを超絶に読みやすくする jq コマンド - WebAPIバリバリ使うor開発する人必須 CLIでJSONの整形をする - ( ꒪⌓꒪) ゆるよろ日記 JSON形式の情報を様々な条件や書式として成形、フィルタリングツール『jq』。上記関連エントリで私もこのツールの存在を知る事になったのですが、ツールの簡易さ・便利さに感動しながら私もちょくちょく利用させてもらっています。 そこでこのエントリでは、jq公式ページに展開されている利用ガイド・リファレンス的な位置付けの『jq Manual』を写経がてらざっくり日語訳してみました。ざっくり訳なのでこの部分の訳おかしい・間違ってる等ありましたら御指摘頂けると幸いです。例示されているサンプルコードも

    軽量JSONパーサー『jq』のドキュメント:『jq Manual』をざっくり日本語訳してみました | DevelopersIO
  • GitHub - mgdm/htmlq: Like jq, but for HTML.

  • S3バケットのライフサイクルルールを一括で更新するスクリプトを作成してみた | DevelopersIO

    7月からアノテーション テクニカルサポートチームにJOINしました 川崎です。 S3のライフサイクル設定 S3のライフサイクル設定を使用すると、バケット内のオブジェクトのライフサイクル管理を指定することができます。 前回のブログでは、AWS CLIの s3api を使用して、指定のライフサイクルルールが付与されていないS3バケットをチェックするスクリプトを作成しました。 S3のライフサイクル設定を更新する際の課題 ライフサイクル設定をチェックするスクリプトができれば、 ライフサイクル設定を更新するよう、スクリプトを修正するのは、一見簡単そうに思えます。 既存設定が消えてしまう ところが、一点注意が必要なところがあり、それが下記ブログの内容になります。 → 新しいルールを追加 → 新規にルールを追加したい場合は、まずは既存のルールと新規ルールをまとめたJSONを用意します。 例を挙げて説明い

    S3バケットのライフサイクルルールを一括で更新するスクリプトを作成してみた | DevelopersIO
    oppara
    oppara 2021/08/23
  • jqを利用してエスケープ処理済みのJSON文字列を作成する方法 | DevelopersIO

    こんにちは!DA(データアナリティクス)事業部 サービスソリューション部の大高です。 エントリでは、jqを利用してエスケープ処理済みのJSON文字列を作成する方法を紹介したいと思います。 結論 結論から言うと、下記のようなコマンドで作成できます。 $ cat event-detail.json | jq '@json' > escaped-event-detail.json やりたいこと たとえば、AWS CLIを利用する時などに、以下のようなリクエスト形式を持つAPIがあります。 [ { "Time": timestamp, "Source": "string", "Resources": ["string", ...], "DetailType": "string", "Detail": "string", "EventBusName": "string", "TraceHeade

    jqを利用してエスケープ処理済みのJSON文字列を作成する方法 | DevelopersIO
  • 配列やnull(特定のキーがない)があるJSONからjqでTSV作ってみた | DevelopersIO

    jqを使ってJSONからTSVを作りたかったのですが、やり始めてから このJSON、中に配列持ってるわ...。 あ、このkeyを持ってないレコードもあるし...。 と気付きました。 JSONは単なるKeyValueに限らず、Valueとして配列なども持つことができますし、 ファイルに含まれているレコードが全て同じKey項目を持っていることなどもちろん保証できません。 この辺を考慮できないと2次元のTSVに落とすことはできません。 最初は諦めてPythonのコードを書こうかと思ったのですが、 調べてみるとjqなら難なくできることがわかりました! 今回は、配列は単純にカンマ区切りの文字列にできるものとして、 配列を含むJSONからTSVを作る処理を行ってみました。 具体的には以下のようなJSONから test.json [ { "job": { "jobId": "sample_job_01"

    配列やnull(特定のキーがない)があるJSONからjqでTSV作ってみた | DevelopersIO
  • jqコマンド覚え書き

    JSON から必要なものを取り出すときに使う jq コマンド。使い方をすぐ忘れてしまって毎回 jq Manual を見ているので、よく使うフィルタをメモしておきます。jq のバージョンは 1.6。随時更新。 目次 サンプルの JSON 準備 JSON をフォーマット 配列の中身をすべて取り出す 特定の配列の要素を取り出す キーを指定して値を取り出す 複数の値を取り出す ダブルクォーテーションを消す CSV 形式で出力する TSV 形式で出力する 絞り込み検索をする and/or 検索 正規表現で検索 文字列の結合 null 入力 集計 日付のフォーマット変更とタイムゾーン変更 サンプルの JSON 準備 サンプルとして以下の JSON を使います。ターミナルで以下のコマンドを実行して $JSON という変数に入れておきます。 JSON=$(cat << EOS [ { "Address":

    jqコマンド覚え書き
    oppara
    oppara 2021/04/18
  • ijq: Interactive jq

  • GitHub - reegnz/jq-zsh-plugin: jq zsh plugin

  • 1