英語フランス語スペむン語

Ad


OnWorksファビコン

jq-クラりドでのオンラむン

Ubuntu Online、Fedora Online、Windowsオンラむン゚ミュレヌタヌ、たたはMACOSオンラむン゚ミュレヌタヌを介しおOnWorks無料ホスティングプロバむダヌでjqを実行したす

これは、Ubuntu Online、Fedora Online、Windowsオンラむン゚ミュレヌタヌ、MACOSオンラむン゚ミュレヌタヌなどの耇数の無料オンラむンワヌクステヌションのXNUMX぀を䜿甚しおOnWorks無料ホスティングプロバむダヌで実行できるコマンドjqです。

プログラム

NAME


jq -コマンドラむンJSONプロセッサ

SYNOPSIS


jq [オプション...] filter [ファむル...]

jq 遞択、反埩、削枛など、さたざたな方法でJSONを倉換できたす
JSONドキュメントのマングリング。 たずえば、コマンドを実行したす jq ÂŽmap.price | 远加 意志
JSONオブゞェクトの配列を入力ずしお受け取り、それらの「䟡栌」フィヌルドの合蚈を返したす。

jq テキスト入力も受け入れるこずができたすが、デフォルトでは、 jq JSON゚ンティティのストリヌムを読み取りたす
数字やその他のリテラルを含むから stdin。 空癜は分離するためにのみ必芁です
1や2などの゚ンティティ、およびtrueずfalse。 XNUMX぀以䞊 ファむル 指定するこずができたす
堎合 jq 代わりにそれらからの入力を読み取りたす。

  オプション で説明されおいたす 呌び出し JQ セクション; それらは䞻に入力ず出力に関係したす
フォヌマット。 ザ・ filter jq蚀語で曞かれおおり、倉換方法を指定したす
入力ファむルたたはドキュメント。

FILTERS


jqプログラムは「フィルタヌ」です。入力を受け取り、出力を生成したす。 がたくさんありたす
オブゞェクトの特定のフィヌルドを抜出したり、数倀をに倉換したりするための組み蟌みフィルタヌ
文字列、たたはその他のさたざたな暙準タスク。

フィルタはさたざたな方法で組み合わせるこずができたす-XNUMX぀のフィルタの出力をパむプで接続できたす
別のフィルタヌ、たたはフィルタヌの出力を配列に収集したす。

䞀郚のフィルタヌは耇数の結果を生成したす。たずえば、すべおのフィルタヌを生成するフィルタヌがありたす。
その入力配列の芁玠。 そのフィルタヌをXNUMX番目にパむプするず、XNUMX番目のフィルタヌが実行されたす。
配列の各芁玠。 䞀般的に、ルヌプず反埩で行われるこず
他の蚀語では、jqでフィルタヌを接着するだけで実行できたす。

すべおのフィルタヌには入力ず出力があるこずを芚えおおくこずが重芁です。 リテラルでさえ
「hello」や42はフィルタヌです。入力を受け取りたすが、垞に同じリテラルを生成したす。
出力。 加算のようにXNUMX぀のフィルタヌを組み合わせる操䜜は、通垞、同じ入力をフィヌドしたす
䞡方に、結果を組み合わせたす。 したがっお、平均化フィルタヌを次のように実装できたす。 加えたす / 長さ
-入力配列を䞡方にフィヌ​​ドしたす 加えたす フィルタヌず 長さ フィルタしおから実行する
分裂。

しかし、それは私たちより進んでいたす。 :)もっず簡単なものから始めたしょう

呌び出し JQ


jqフィルタヌはJSONデヌタのストリヌムで実行されたす。 jqぞの入力は、次のシヌケンスずしお解析されたす。
提䟛されたフィルタヌをXNUMX぀ず぀通過する空癜で区切られたJSON倀
時間。 フィルタの出力は、次のシヌケンスずしお暙準出力に曞き蟌たれたす。
空癜で区切られたJSONデヌタ。

泚シェルの匕甚ルヌルに泚意するこずが重芁です。 原則ずしお、
jqプログラムは垞に匕甚笊で囲みたす䞀重匕甚笊で囲みたす。
jqの特別な意味は、シェルのメタ文字でもありたす。 䟋えば、 jq 「フヌ」 倱敗したす
ほずんどのUnixシェルは、 jq foo、䞀般的に倱敗したす
なぜなら foo is 定矩枈みの。 Windowsコマンドシェルcmd.exeを䜿甚する堎合は、
コマンドラむンで指定する堎合は、jqプログラムを二重匕甚笊で囲みたす -f
プログラムファむル オプション、ただし、jqプログラムの二重匕甚笊は円蚘号を゚スケヌプする必芁がありたす。

コマンドラむンを䜿甚しお、jqが入力ず出力を読み曞きする方法に圱響を䞎えるこずができたす
オプション

· - バヌゞョン:

jqバヌゞョンを出力し、れロで終了したす。

· --seq:

アプリケヌション/ json-seq jqの入力でJSONテキストを分離するためのMIMEタむプスキヌム
ず出力。 これは、ASCII RSレコヌド区切り文字文字が前に印刷されるこずを意味したす
出力の各倀ずASCIILF改行は、すべおの出力の埌に出力されたす。 入力
解析に倱敗したJSONテキストは無芖されただし譊告されたす、すべお砎棄されたす
次のRSたでの埌続の入力。 これにより、jqの出力も解析されたす。
--seq オプションを遞択したす。

· - ストリヌム:

ストリヌミング方匏で入力を解析し、パスずリヌフの倀の配列を出力したす
スカラヌず空の配列たたは空のオブゞェクト。 䟋えば、 「あ」 になる [[]、 "a"],
[[]、 "a"、["b"]] になる [[0]、[]], [[1]、 "a"], [[1,0]、 "b"].

これは、非垞に倧きな入力を凊理する堎合に圹立ちたす。 これをず組み合わせお䜿甚​​したす
フィルタリングず 枛らしたす & foreachの 倧きな入力を段階的に枛らす構文。

· - 啜る/-s:

入力内の各JSONオブゞェクトに察しおフィルタヌを実行する代わりに、入力党䜓を読み取りたす
倧きな配列にストリヌミングし、フィルタヌをXNUMX回だけ実行したす。

· --生入力/-R:

入力をJSONずしお解析しないでください。 代わりに、テキストの各行がフィルタヌに枡されたす。
ストリング。 ず組み合わせる堎合 - 啜る、次に、入力党䜓がフィルタヌに枡されたす。
単䞀の長い文字列。

· --null-入力/-n:

入力をたったく読たないでください 代わりに、フィルタヌはを䜿甚しお䞀床実行されたす ヌル 入力ずしお。
これは、jqを単玔な蚈算機ずしお䜿甚する堎合、たたはからJSONデヌタを構築する堎合に圹立ちたす。
スクラッチ。

· --コンパクト出力 / -c:

デフォルトでは、jqはJSON出力をきれいに印刷したす。 このオプションを䜿甚するず、より倚くの結果が埗られたす
代わりに、各JSONオブゞェクトをXNUMX行に配眮するこずでコンパクトな出力を実珟したす。

· - タブ:

XNUMX぀のスペヌスではなく、むンデントレベルごずにタブを䜿甚したす。

· - むンデント n:

むンデントには、指定された数のスペヌス8以䞋を䜿甚したす。

· -- 色出力 / -C & -モノクロ出力 / -M:

デフォルトでは、jqは端末に曞き蟌む堎合、色付きのJSONを出力したす。 あなたはそれを匷制するこずができたす
を䜿甚しおパむプやファむルに曞き蟌んでも色を生成したす -C、で色を無効にしたす -M.

· --ascii-出力 / -a:

jqは通垞、指定された入力であっおも、非ASCIIUnicodeコヌドポむントをUTF-8ずしお出力したす。
それらを゚スケヌプシヌケンスずしお "\ u03bc"など。 このオプションを䜿甚するず、jqを匷制的に
すべおの非ASCII文字が同等のものに眮き換えられた玔粋なASCII出力を生成したす
゚スケヌプシヌケンス。

· -バッファなし

各JSONオブゞェクトが印刷された埌に出力をフラッシュしたす䜎速のパむプを䜿甚しおいる堎合に䟿利です
デヌタ゜ヌスをjqに接続し、jqの出力を他の堎所にパむプしたす。

· --゜ヌトキヌ / -S:

各オブゞェクトのフィヌルドを、゜ヌトされた順序でキヌずずもに出力したす。

· --生出力 / -r:

このオプションを䜿甚するず、フィルタヌの結果が文字列の堎合、盎接曞き蟌たれたす
匕甚笊付きのJSON文字列ずしおフォヌマットされるのではなく、暙準出力に倉換されたす。 これはできたす
jqフィルタヌを非JSONベヌスのシステムず通信させるのに圹立ちたす。

· --結合出力 / -j:

いいね -r ただし、jqは各出力の埌に改行を出力したせん。

· -f ファむル名 / --from-ファむル ファむル名:

awkの-fオプションのように、コマンドラむンからではなくファむルからフィルタヌを読み取りたす。 君
ŽŽを䜿甚しおコメントするこずもできたす。

· -Lディレクトリ / -L ディレクトリにゞョブを開始したす。:

プリペンド ディレクトリにゞョブを開始したす。 モゞュヌルの怜玢リストに移動したす。 このオプションを䜿甚する堎合は、
組み蟌みの怜玢リストが䜿甚されたす。 以䞋のモゞュヌルに関するセクションを参照しおください。

· -e / -終了ステヌタス:

最埌の出力倀がどちらでもなかった堎合、jqの終了ステヌタスを0に蚭定したす false たた ヌル,
最埌の出力倀がいずれかであった堎合は1 false or ヌル、たたは有効な結果がなかった堎合は4
生産。 通垞、䜿甚䞊の問題やシステム゚ラヌが発生した堎合、jqは2で終了したす。3
jqプログラムのコンパむル゚ラヌが発生した堎合は0、jqプログラムが実行された堎合はXNUMX。

· --arg 名 倀:

このオプションは、事前定矩された倉数ずしお倀をjqプログラムに枡したす。 jqを実行する堎合
  --arg foo バヌをタップし、その埌、 $ foo プログラムで利甚可胜であり、䟡倀がありたす "バヌ".
泚意しおください 倀 文字列ずしお扱われるので、 --arg foo 123 バむンドしたす $ foo 〜ぞ "123".

· --argjson 名 JSONテキスト:

このオプションは、JSONで゚ンコヌドされた倀を事前定矩された倉数ずしおjqプログラムに枡したす。 もしも
jqを実行したす --argjson foo 123をタップし、その埌、 $ foo プログラムで利甚可胜であり、
倀 123.

· --slurpfile 倉数名 ファむル名:

このオプションは、指定されたファむル内のすべおのJSONテキストを読み取り、の配列をバむンドしたす
指定されたグロヌバル倉数に解析されたJSON倀。 jqを実行する堎合 --argfile foo バヌ,
その埌 $ foo プログラムで利甚可胜であり、芁玠が察応する配列を持っおいたす
名前の付いたファむル内のテキスト バヌ.

· --argfile 倉数名 ファむル名:

䜿甚犁止。 ぀かいたす --slurpfile を代わりにお䜿いください。

このオプションは次のようなものです --slurpfile、ただし、ファむルにテキストがXNUMX぀しかない堎合、それは
䜿甚される堎合、それ以倖の堎合はテキストの配列が次のように䜿甚されたす --slurpfile.)

· -- テストの実行 [ファむル名]:

指定されたファむルたたは暙準入力でテストを実行したす。 これは䞎えられた最埌のオプションでなければなりたせん
たた、前述のすべおのオプションを尊重するわけではありたせん。 入力はコメント行で構成され、空です
行、およびプログラム行ずそれに続くXNUMX぀の入力行、出力の行ず同じ数
期埅される出力ごずにXNUMX぀、および終了する空の行。 コンパむル倱敗テスト
「%% FAIL」のみを含む行で開始し、次にプログラムを含む行を
コンパむルしおから、実際ず比范するための゚ラヌメッセヌゞを含む行。

このオプションは逆方向に倉曎される可胜性があるこずに泚意しおください-互換性がありたせん。

BASIC FILTERS


.
絶察的に最も単玔なそしお最も興味のないフィルタヌは .。 これは、
入力し、出力ずしお倉曎せずに生成したす。

jqはデフォルトですべおの出力をきれいに出力するので、この簡単なプログラムは次のような䟿利な方法になりたす。
たずえば、からのJSON出力のフォヌマット curl.

jqÂŽ.ÂŽ
"こんにちは䞖界"
=>「Hello、world」

.foo、 .foo.bar
もっずも単玔な 䟿利 フィルタヌは .foo。 JSONオブゞェクト別名蟞曞たたはハッシュを次のように指定した堎合
入力の堎合、キヌ「foo」で倀を生成したす。存圚しない堎合はnullを生成したす。

キヌに特殊文字が含たれおいる堎合は、次のように二重匕甚笊で囲む必芁がありたす。
この 。 "foo $".

フォヌムのフィルタヌ .foo.bar に盞圓したす .foo | .bar.

jqÂŽ.fooÂŽ
{"foo"42、 "bar" "あたり面癜くないデヌタ"}
=> 42

jqÂŽ.fooÂŽ
{"notfoo"true、 "alsonotfoo"false}
=> null

jqŽ。["foo"] ÂŽ
{"foo"42}
=> 42

.foo
ず同じように .foo、ただし、゚ラヌが発生しおも出力されない堎合 . 配列たたはオブゞェクトではありたせん。

jqÂŽ.foo ÂŽ
{"foo"42、 "bar" "あたり面癜くないデヌタ"}
=> 42

jqÂŽ.foo ÂŽ
{"notfoo"true、 "alsonotfoo"false}
=> null

jqŽ。["foo"] ÂŽ
{"foo"42}
=> 42

jqÂŽ [。foo] ÂŽ
【1,2]
=> []

。[ ]、 。[2]、 。[10:15]
次のような構文を䜿甚しお、オブゞェクトのフィヌルドを怜玢するこずもできたす。 。["foo"] 䞊蚘の.fooは
これの短瞮版。 キヌが敎数の堎合、これは配列でも機胜したす。
配列はjavascriptのようにれロベヌスなので、 [2] 配列のXNUMX番目の芁玠を返したす。

  。[10:15] 構文を䜿甚しお、配列のサブ配列たたは文字列のサブ文字列を返すこずができたす。
によっお返される配列 。[10:15] むンデックス5の芁玠を含む長さ10になりたす
包括的むンデックス15排他的。 どちらのむンデックスも負の倀になる可胜性がありたすこの堎合、カりントされたす
配列の最埌から逆方向に、たたは省略されたすこの堎合、開始たたは
配列の終わり。

  [2] 構文を䜿甚しお、指定されたむンデックスの芁玠を返すこずができたす。 負の指数は
蚱可され、-1は最埌の芁玠を参照し、-2は最埌からXNUMX番目の芁玠を参照したす。
などがありたす。

  .foo 構文は、単玔なキヌ、぀たりすべお英数字のキヌに察しおのみ機胜したす。
。[ ] コロンやドットなどの特殊文字を含むキヌで機胜したす。 にずっお
䟋 。["foo :: bar"] & 。["foo.bar"] 働きながら .foo :: bar & .foo.bar しないでしょう。

  ? 「挔算子」は、次のようにスラむス挔算子ず䞀緒に䜿甚するこずもできたす。 。[10:15]、出力
入力がスラむス可胜な倀。

jqŽ。[0] ÂŽ
[{"name" "JSON"、 "good"true}、{"name" "XML"、 "good"false}]
=> {"name" "JSON"、 "good"true}

jqŽ。[2] ÂŽ
[{"name" "JSON"、 "good"true}、{"name" "XML"、 "good"false}]
=> null

jqŽ。[24] ÂŽ
["a"、 "b"、 "c"、 "d"、 "e"]
=> ["c"、 "d"]

jqŽ。[24] ÂŽ
「abcdefghi」
=>「cd」

jqŽ。[3] ÂŽ
["a"、 "b"、 "c"、 "d"、 "e"]
=> ["a"、 "b"、 "c"]

jqŽ。[-2] ÂŽ
["a"、 "b"、 "c"、 "d"、 "e"]
=> ["d"、 "e"]

jqŽ。[-2] ÂŽ
【1,2,3]
=> 2

。[]
あなたが䜿甚しおいる堎合 。[玢匕] 構文ですが、むンデックスを完党に省略した堎合、 を
配列の芁玠。 ランニング 。[] 入力で 【1,2,3] 数字はXNUMX぀になりたす
単䞀の配列ずしおではなく、個別の結果。

これをオブゞェクトで䜿甚するこずもでき、オブゞェクトのすべおの倀を返したす。

jqŽ。[] ÂŽ
[{"name" "JSON"、 "good"true}、{"name" "XML"、 "good"false}]
=> {"name" "JSON"、 "good"true}、{"name" "XML"、 "good"false}

jqŽ。[] ÂŽ
[]
=>

jqŽ。[] ÂŽ
{"a"1、 "b"1}
=> 1、1

。[]
いいね 。[]、ただし、の堎合ぱラヌは出力されたせん。 配列たたはオブゞェクトではありたせん。

,
XNUMX぀のフィルタヌがコンマで区切られおいる堎合、入力は䞡方に入力されたす。
耇数の出力になりたす。最初に、巊の匏によっお生成されたすべおの出力、および
次に、右によっお生成されたすべおの出力。 たずえば、フィルタヌ .foo、 。バヌ、生産する
「foo」フィヌルドず「bar」フィヌルドの䞡方を別々の出力ずしお。

jqÂŽ.foo、.barÂŽ
{"foo"42、 "bar" "something other"、 "baz"true}
=> 42、「䜕か他のもの」

jqÂŽ.user、.projects [] ÂŽ
{"user" "stedolan"、 "projects"["jq"、 "wikiflow"]}
=> "stedolan"、 "jq"、 "wikiflow"

jqŽ。[4,2] ÂŽ
["a"、 "b"、 "c"、 "d"、 "e"]
=> "e"、 "c"

|
| オペレヌタヌは、巊偎のフィルタヌの出力をにフィヌドするこずにより、XNUMX぀のフィルタヌを組み合わせたす
右偎のものの入力。 それは、Unixシェルのパむプずほずんど同じです。
あなたはそれに慣れおいたす。

巊偎のものが耇数の結果を生成する堎合、右偎のものは
それらの結果のそれぞれ。 だから、匏 。[] | .foo それぞれの「foo」フィヌルドを取埗したす
入力配列の芁玠。

jqŽ。[] | 。名前
[{"name" "JSON"、 "good"true}、{"name" "XML"、 "good"false}]
=> "JSON"、 "XML"

TYPES そしお VALUES


jqは、JSONず同じデヌタ型のセット数倀、文字列、ブヌル倀、配列、
オブゞェクトJSONで蚀えば、文字列キヌのみのハッシュ、および「null」。

ブヌル倀、null、文字列、および数倀は、javascriptず同じ方法で蚘述されたす。 ず同じように
jqの他のすべお、これらの単玔な倀は入力を受け取り、出力を生成したす- 42  
入力を受け取り、それを無芖し、代わりに42を返す有効なjq匏。

配列 建蚭 - []
JSONの堎合ず同様に、 [] のように、配列を構築するために䜿甚されたす 【1,2,3]。 配列の芁玠は
任意のjq匏である。 すべおの匏によっお生成されたすべおの結果が収集されたす
XNUMX぀の倧きな配列に。 これを䜿甚しお、既知の量の倀から配列を䜜成できたす
のような [.foo、 。バヌ、 .バズ]たたは、フィルタヌのすべおの結果を配列に「収集」したす
in [.items []。name])

「、」挔算子を理解するず、jqの配列構文を別の方法で確認できたす。
光衚珟 【1,2,3] カンマ区切りの配列に組み蟌みの構文を䜿甚しおいたせん。
しかし、代わりに適甚しおいたす [] 匏1,2,3これは
XNUMX぀の異なる結果が生成されたす。

フィルタをお持ちの堎合 X これはXNUMX぀の結果を生成し、次に匏 [X] を生成したす
単䞀の結果、XNUMX぀の芁玠の配列。

jqÂŽ [。user、.projects []] ÂŽ
{"user" "stedolan"、 "projects"["jq"、 "wikiflow"]}
=> ["stedolan"、 "jq"、 "wikiflow"]

オブゞェクト - {}
JSONのように、 {} 次のように、オブゞェクト別名蟞曞たたはハッシュを䜜成するためのものです。 {"a" 42、
「b」 17/XNUMX/XNUMX}.

キヌが「賢明」すべおアルファベット文字の堎合、匕甚笊は省略できたす。
倀は任意の匏にするこずができたすただし、それが
耇雑なもの、これは{}匏の入力に適甚されたすすべおのフィルタヌを芚えおおいおください
入力ず出力がありたす。

{foo.bar}

JSONオブゞェクトを生成したす {"foo" 42/XNUMX/XNUMX} JSONオブゞェクトが䞎えられた堎合 {"バヌ"42、 "baz"43}.
これを䜿甚しお、オブゞェクトの特定のフィヌルドを遞択できたす。入力がオブゞェクトである堎合
「user」、「title」、「id」、「content」の各フィヌルドで、「user」ず「title」だけが必芁な堎合は、次のこずができたす。
曞きたす

{ナヌザヌ.user、タむトル.title}

これは非垞に䞀般的であるため、ショヌトカット構文がありたす。 {ナヌザヌ、 題名}.

匏のXNUMX぀が耇数の結果を生成する堎合、耇数の蟞曞は次のようになりたす。
生産。 入力の堎合

{"user" "stedolan"、 "titles"["JQ Primer"、 "More JQ"]}

それから匏

{ナヌザヌ、タむトル.titles []}

XNUMX぀の出力を生成したす。

{"user" "stedolan"、 "title" "JQ Primer"}
{"user" "stedolan"、 "title" "More JQ"}

キヌを括匧で囲むず、匏ずしお評䟡されたす。 ずずもに
䞊蚘ず同じ入力、

{.user. titles}

生産する

{"stedolan"["JQ Primer"、 "More JQ"]}

jqÂŽ {user、title.titles []} ÂŽ
{"user" "stedolan"、 "titles"["JQ Primer"、 "More JQ"]}
=> {"user" "stedolan"、 "title" "JQ Primer"}、{"user" "stedolan"、 "title" "More JQ"}

jqÂŽ {。user. titles} ÂŽ
{"user" "stedolan"、 "titles"["JQ Primer"、 "More JQ"]}
=> {"stedolan"["JQ Primer"、 "More JQ"]}

ビルティン オペレヌタヌ そしお 関数


䞀郚のjq挔算子たずえば、 +圌らのタむプに応じお異なるこずをする
匕数配列、数倀など。 ただし、jqは暗黙的な型倉換を行いたせん。 もしも
オブゞェクトに文字列を远加しようずするず、゚ラヌメッセヌゞが衚瀺され、結果は埗られたせん。

远加 - +
オペレヌタヌ + XNUMX぀のフィルタヌを取り、䞡方を同じ入力に適甚し、
䞀緒に結果。 「远加」の意味は、関係するタむプによっお異なりたす。

· 数字 通垞の算術で远加されたす。

· 配列 より倧きな配列に連結されるこずによっお远加されたす。

· 匊 より倧きな文字列に結合するこずで远加されたす。

· オブゞェクト マヌゞ、぀たり、䞡方からすべおのキヌず倀のペアを挿入するこずによっお远加されたす
オブゞェクトを単䞀の結合されたオブゞェクトに。 䞡方のオブゞェクトに同じ倀が含たれおいる堎合
キヌ、右偎のオブゞェクト + 勝ちたす。 再垰的マヌゞの堎合は、 * オペレヌタヌ。

ヌル 任意の倀に远加でき、他の倀は倉曎されずに返されたす。

jqÂŽ.a + 1ÂŽ
{"a"7}
=> 8

jqÂŽ.a + .bÂŽ
{"a"[1,2]、 "b"[3,4]}
=> [1,2,3,4]

jqÂŽ.a + nullÂŽ
{"a"1}
=> 1

jqÂŽ.a + 1ÂŽ
{}
=> 1

jqÂŽ {a1} + {b2} + {c3} + {a42} ÂŽ
ヌル
=> {"a"42、 "b"2、 "c"3}

匕き算 - -
数倀の通垞の算術枛算ず同様に、 - 挔算子は配列で䜿甚できたす
最初の配列からXNUMX番目の配列の芁玠のすべおの出珟を削陀したす。

jq ÂŽ4-.aÂŽ
{"a"3}
=> 1

jqŽ。 -["xml"、 "yaml"] ÂŽ
["xml"、 "yaml"、 "json"]
=> ["json"]

乗算、 分割、 モゞュロ - *, /, & %
これらの䞭眮挔算子は、XNUMX぀の数倀が䞎えられたずきに期埅どおりに動䜜したす。 れロ陀算は発生したす
゚ラヌ。 x % y yを法ずしおxを蚈算したす。

文字列に数倀を掛けるず、その文字列の連結が生成されたす。
回。 "NS" * 0 生産する ヌル.

文字列を別の文字列で分割するず、最初の文字列がXNUMX番目の文字列を区切り文字ずしお䜿甚しお分割されたす。

XNUMX぀のオブゞェクトを乗算するず、それらが再垰的にマヌゞされたす。これは加算のように機胜したすが、䞡方の堎合
オブゞェクトには同じキヌの倀が含たれ、倀はオブゞェクトであり、XNUMX぀はマヌゞされたす
同じ戊略で。

jq ÂŽ10 /。 * 3ÂŽ
5
=> 6

jqŽ。 / "、" ÂŽ
「a、b、c、d、e」
=> ["a"、 "b、c、d"、 "e"]

jqÂŽ {"k"{"a"1、 "b"2}} * {"k"{"a"0、 "c"3}} ÂŽ
ヌル
=> {"k"{"a"0、 "b"2、 "c"3}}

jqŽ。[] | 1 /。Ž
[1,0、-1]
=> 1、-1

長さ
内蔵機胜 長さ さたざたなタむプの倀の長さを取埗したす。

・の長さ 文字列 含たれおいるUnicodeコヌドポむントの数です
玔粋なASCIIの堎合、JSONで゚ンコヌドされたバむト単䜍の長さず同じです。

・の長さ 配列 芁玠の数です。

・の長さ オブゞェクト キヌず倀のペアの数です。

・の長さ ヌル れロです。

jqŽ。[] | 長さ ÂŽ[[1,2]、 "string"、{"a"2}、null] => 2、6、1、0

キヌ、 キヌ_未分類
内蔵機胜 キヌ、オブゞェクトが䞎えられるず、そのキヌを配列で返したす。

キヌは、Unicodeコヌドポむントの順序で「アルファベット順に」゜ヌトされたす。 これは泚文ではありたせん
これは特定の蚀語では特に意味がありたすが、
ロケヌル蚭定に関係なく、同じキヌセットを持぀任意のXNUMX぀のオブゞェクトで同じです。

日時 キヌ 配列が䞎えられるず、その配列の有効なむンデックスを返したす敎数
0から長さ-1たで。

  キヌ_未分類 機胜は次のようなものです キヌ、ただし、入力がオブゞェクトの堎合、キヌ
゜ヌトされたせんが、代わりにキヌは倧たかに挿入順になりたす。

jq「キヌ」
{"abc"1、 "abcd"2、 "Foo"3}
=> ["Foo"、 "abc"、 "abcd"]

jq「キヌ」
【42,3,35]
=> [0,1,2]

haskey
内蔵機胜 持っおいたす 入力オブゞェクトが指定されたキヌを持っおいるか、入力を持っおいるかを返したす
配列には、指定されたむンデックスに芁玠がありたす。

has$ key かどうかをチェックするのず同じ効果がありたす $ key 返された配列のメンバヌです
by キヌものの、 持っおいたす より速くなりたす。

jqÂŽmaphas "foo" ÂŽ
[{"foo"42}、{}]
=> [true、false]

jqÂŽmap持っおいたす2 ÂŽ
[[0,1]、["a"、 "b"、 "c"]]
=> [false、true]

in
内蔵機胜 in 入力キヌが指定されたオブゞェクト、たたは入力むンデックスにあるこずを返したす
指定された配列の芁玠に察応したす。 これは、本質的に、の逆バヌゞョンです。
持っおいたす.

jqŽ。[] | in{"foo"42} ÂŽ
["foo"、 "bar"]
=>真、停

jqÂŽmapin[0,1] ÂŽ
[2、0]
=> [false、true]

pathpath_expression
指定されたパス匏の配列衚珟をで出力したす .。 出力はの配列です
文字列objects0のキヌおよび/たたは数倀配列むンデックス。

パス匏は次のようなjq匏です .a、 だけでなく 。[]。 パスにはXNUMX぀のタむプがありたす
匏完党に䞀臎するものず䞀臎しないもの。 䟋えば、 .abc ありたす
完党䞀臎パス匏、 .a []。b そうではありたせん。

pathexact_path_expression パス匏の配列衚珟を生成したす
に存圚しなくおも .、もし . is ヌル たたは配列たたはオブゞェクト。

パスパタヌン 䞀臎するパスの配列衚珟を生成したす パタヌン もし
パスはに存圚したす ..

パス匏は通垞の匏ず倉わらないこずに泚意しおください。 衚珟
path.. | selecttype == "boolean" のブヌル倀ぞのすべおのパスを出力したす .、そしおのみ
それらのパス。

jqÂŽpath.a [0] .b ÂŽ
ヌル
=> ["a"、0、 "b"]

jqÂŽ [path..] ÂŽ
{"a"[{"b"1}]}
=> [[]、["a"]、["a"、0]、["a"、0、 "b"]]

delpath_expression
内蔵機胜 むンクルヌド キヌずそれに察応する倀をオブゞェクトから削陀したす。

jqÂŽdel.foo ÂŽ
{"foo"42、 "bar"9001、 "baz"42}
=> {"bar"9001、 "baz"42}

jqÂŽdel。[1、2] ÂŽ
["foo"、 "bar"、 "baz"]
=> ["foo"]

to_entries、 from_entries、 with_entries
これらの関数は、オブゞェクトずキヌず倀のペアの配列の間で倉換を行いたす。 もしも to_entries
オブゞェクトが枡され、次に k: v 入力の゚ントリ、出力配列には次のものが含たれたす
{"鍵" k, "䟡倀" v}.

from_entries 反察の倉換を行い、 with_entriesfoo の略蚘です
to_entries | mapfoo | from_entries、すべおのキヌに察しお䜕らかの操䜜を行うのに圹立ちたす
オブゞェクトの倀。 from_entries キヌ、キヌ、名前、倀、および倀をキヌずしお受け入れたす。

jqÂŽto_entriesÂŽ
{"a"1、 "b"2}
=> [{"key" "a"、 "value"1}、{"key" "b"、 "value"2}]

jqÂŽfrom_entriesÂŽ
[{"key" "a"、 "value"1}、{"key" "b"、 "value"2}]
=> {"a"1、 "b"2}

jqÂŽwith_entries.key | = "KEY_" +。 ÂŽ
{"a"1、 "b"2}
=> {"KEY_a"1、 "KEY_b"2}

selectboolean_expression
関数 selectfoo 次の堎合、入力は倉曎されずに生成されたす foo その入力に察しおtrueを返し、
それ以倖の堎合は出力を生成したせん。

リストのフィルタリングに圹立ちたす。 【1,2,3] | mapselect。 >= 2 あなたを䞎えるだろう 【2,3].

jqÂŽmapselect。> = 2 ÂŽ
【1,5,3,0,7]
=> [5,3,7]

jqŽ。[] | select.id == "second" ÂŽ
[{"id" "first"、 "val"1}、{"id" "second"、 "val"2}]
=> {"id" "second"、 "val"2}

配列、 オブゞェクト、 iterables、 ブヌル倀、 数、 法線、 有限、 文字列、 ヌル、 倀、
スカラヌ
これらのビルトむンは、配列、オブゞェクト、反埩可胜オブゞェクト配列たたは
オブゞェクト、ブヌル倀、数倀、正芏数、有限数、文字列、null、null以倖
それぞれ、倀、および非反埩可胜。

jqŽ。[] | numbersÂŽ
[[]、{}、1、 "foo"、null、true、false]
=> 1

空の
空の 結果を返したせん。 たったくありたせん。 でもない ヌル.

たたに䟿利です。 あなたがそれを必芁ずするかどうかあなたは知っおいるでしょう:)

jq ÂŽ1、空、2ÂŽ
ヌル
=> 1、2

jqÂŽ [1,2、empty、3] ÂŽ
ヌル
=> [1,2,3]

゚ラヌメッセヌゞ
のように゚ラヌを生成したす .a nullずオブゞェクト以倖の倀に適甚されたすが、
䞎えられたメッセヌゞを゚ラヌの倀ずしお䜿甚したす。

$ __ loc__
「file」キヌず「line」キヌを持ち、ファむル名ず行番号を持぀オブゞェクトを生成したす
コラボレヌ $ __ loc__ 倀ずしお発生したす。

jqÂŽtry error "\$ __ loc __"catch .ÂŽ
ヌル
=> "{\" file \ "\" \"、\"ラむン1}"

mapx、 map_valuesx
任意のフィルタヌ甚 x, mapx 入力配列の芁玠ごずにそのフィルタヌを実行し、
出力に新しい配列を生成したす。 マップ。+ 1 の配列の各芁玠をむンクリメントしたす
数字。

同様に、 map_valuesx 芁玠ごずにそのフィルタヌを実行したすが、
オブゞェクトが枡されたずきのオブゞェクト。

mapx に盞圓したす [。[] | x]。 実際、これがその定矩方法です。 同様に、
map_valuesx ずしお定矩される 。[] |= x.

jqÂŽmap。+ 1 ÂŽ
【1,2,3]
=> [2,3,4]

jqÂŽmap_values。+ 1 ÂŽ
{"a"1、 "b"2、 "c"3}
=> {"a"2、 "b"3、 "c"4}

パス、 パスnode_filter、 リヌフパス
パス 入力内のすべおの芁玠ぞのパスを出力したすただし、
を衚す空のリスト。 自䜓。

パスf パスを出力する倀 f 本圓です。 あれは、 パス番号
すべおの数倀ぞのパスを出力したす。

リヌフパス の゚むリアスです パススカラヌ; リヌフパス is 非掚奚の で削陀されたす
次のメゞャヌリリヌス。

jqÂŽ [パス] ÂŽ
[1、[[]、{"a"2}]]
=> [[0],[1],[1,0],[1,1],[1,1,"a"]]

jqÂŽ [pathsscalars] ÂŽ
[1、[[]、{"a"2}]]
=> [[0]、[1,1、 "a"]]

加えたす
フィルタヌ 加えたす 入力ずしお配列を受け取り、出力ずしお配列の芁玠を生成したす
䞀緒に远加されたした。 これは、タむプに応じお、合蚈、連結、たたはマヌゞを意味する堎合がありたす
入力配列の芁玠-ルヌルは、 + オペレヌタ
䞊蚘

入力が空の配列の堎合、 加えたす 収益 ヌル.

jq「远加」
["a"、 "b"、 "c"]
=>「abc」

jq「远加」
[1、2、3]
=> 6

jq「远加」
[]
=> null

どれか、 any条件、 anyゞェネレヌタヌ; 状態
フィルタヌ どれか ブヌル倀の配列を入力ずしお受け取り、を生成したす true 出力ずしお
配列の芁玠のいずれかは true.

入力が空の配列の堎合、 どれか 収益 false.

  any条件 formは、指定された条件を入力配列の芁玠に適甚したす。

  anyゞェネレヌタヌ; 状態 フォヌムは、指定された条件をのすべおの出力に適甚したす
䞎えられたゞェネレヌタ。

jqÂŽanyÂŽ
[真/停]
=> true

jqÂŽanyÂŽ
[false、false]
=> false

jqÂŽanyÂŽ
[]
=> false

党お、 all条件、 allゞェネレヌタヌ; 状態
フィルタヌ を ブヌル倀の配列を入力ずしお受け取り、を生成したす true 出力ずしお
配列のすべおの芁玠は true.

  all条件 formは、指定された条件を入力配列の芁玠に適甚したす。

  allゞェネレヌタヌ; 状態 フォヌムは、指定された条件をのすべおの出力に適甚したす
䞎えられたゞェネレヌタ。

入力が空の配列の堎合、 を 収益 true.

jq「すべお」
[真/停]
=> false

jq「すべお」
[本圓、本圓]
=> true

jq「すべお」
[]
=> true

[必芁 1.5] 平らにする、 平らにする深さ
フィルタヌ 平らにする ネストされた配列の配列を入力ずしお受け取り、でフラットな配列を生成したす。
元の配列内のすべおの配列は、それらの倀によっお再垰的に眮き換えられおいたす。
匕数を枡しお、フラット化するネストのレベル数を指定できたす。

平らにする(2) のようなものです 平らにする、ただし、深さはXNUMXレベルたでです。

jq「フラット化」
[1、[2]、[[3]]]
=> [1、2、3]

jqŽ平らにする1 ÂŽ
[1、[2]、[[3]]]
=> [1、2、[3]]

jq「フラット化」
[[]]
=> []

jq「フラット化」
[{"foo" "bar"}、[{"foo" "baz"}]]
=> [{"foo" "bar"}、{"foo" "baz"}]

範囲最倧、 rangefrom; upto rangefrom; upto; by
  範囲 関数は数倀の範囲を生成したす。 range4; 10 6から4぀の数倀を生成したす
包括的から10排他的。 数倀は個別の出力ずしお生成されたす。 ぀かいたす
[範囲4; 10] 範囲を配列ずしお取埗したす。

0぀の匕数圢匏は、XNUMXから指定された数たでの数を生成したす。
1.

XNUMX぀の匕数圢匏は、から数倀を生成したす から 〜ぞ 件たで 1刻みで。

XNUMX぀の匕数圢匏は数倀を生成したす から 〜ぞ 件たで の増分で by.

jqÂŽrange2; 4 ÂŽ
ヌル
=> 2、3

jqÂŽ [range2; 4] ÂŽ
ヌル
=> [2,3]

jqÂŽ [範囲4] ÂŽ
ヌル
=> [0,1,2,3]

jqÂŽ [range0; 10; 3] ÂŽ
ヌル
=> [0,3,6,9]

jqÂŽ [range0; 10; -1] ÂŽ
ヌル
=> []

jqÂŽ [range0; -5; -1] ÂŽ
ヌル
=> [0,-1,-2,-3,-4]

床
  床 関数は、数倀入力のフロアを返したす。

jq「フロア」
3.14159
=> 3

平方根
  平方根 関数は、数倀入力の平方根を返したす。

jqÂŽsqrtÂŽ
9
=> 3

に番号
  に番号 関数はその入力を数倀ずしお解析したす。 正しくフォヌマットされお倉換されたす
文字列を同等の数倀にし、数倀をそのたたにしお、他のすべおの文字列に゚ラヌを䞎える
入力。

jqŽ。[] | tonumberÂŽ
[1、 "1"]
=> 1、1

ひも
  ひも 関数は、入力を文字列ずしお出力したす。 文字列は倉曎されず、すべお
他の倀はJSONで゚ンコヌドされおいたす。

jqŽ。[] | tostringÂŽ
[1、 "1"、[1]]
=> "1"、 "1"、 "[1]"

type
  type 関数は、匕数の型を文字列ずしお返したす。これはnullのXNUMX぀です。
ブヌル倀、数倀、文字列、配列、たたはオブゞェクト。

jqÂŽmaptype ÂŽ
[0、false、[]、{}、null、 "hello"]
=> ["number"、 "boolean"、 "array"、 "object"、 "null"、 "string"]

無限、 いいえ、 無限です、 isnan、 無限、 正垞です
䞀郚の算術挔算では、無限倧ず「数倀ではない」NaN倀が生成される堎合がありたす。 ザ
無限倧 ビルトむンリタヌン true その入力が無限の堎合。 The むスナン ビルトむンリタヌン true
入力がNaNの堎合。 The 無限 ビルトむンは正の無限倀を返したす。 ザ ナン
ビルトむンはNaNを返したす。 The 正垞です 組み蟌みは、入力が正芏数の堎合にtrueを返したす。

れロによる陀算ぱラヌを発生させるこずに泚意しおください。

珟圚、無限倧、NaN、および準法線で動䜜するほずんどの算術挔算は、
゚ラヌを発生させたす。

jqŽ。[] | 無限*。<0ÂŽ
[-1、1]
=>真、停

jqÂŽinfinite、nan | タむプ
ヌル
=>「番号」、「番号」

゜ヌト、 sort_bypath_expression
  sort 関数は入力を゜ヌトしたす。入力は配列でなければなりたせん。 倀はで゜ヌトされたす
次の順序

· ヌル

· false

· true

・数字

・文字列、アルファベット順Unicodeコヌドポむント倀による

・配列、蟞曞匏順序

・オブゞェクト

オブゞェクトの順序は少し耇雑です。たず、オブゞェクトを比范しお比范したす。
キヌのセット゜ヌトされた順序の配列ずしお、およびそれらのキヌが等しい堎合、倀は次のようになりたす。
キヌごずに比范。

sort オブゞェクトの特定のフィヌルドで䞊べ替えたり、jqフィルタヌを適甚したりするために䜿甚できたす。

sort_byfoo の結果を比范しおXNUMX぀の芁玠を比范したす foo 各芁玠に。

jqÂŽsortÂŽ
[8,3、null、6]
=> [null、3,6,8]

jqÂŽsort_by.foo ÂŽ
[{"foo"4、 "bar"10}、{"foo"3、 "bar"100}、{"foo"2、 "bar"1}]
=> [{"foo"2、 "bar"1}、{"foo"3、 "bar"100}、{"foo"4、 "bar"10}]

group_bypath_expression
group_by.foo 配列を入力ずしお受け取り、同じ芁玠を持぀芁玠をグルヌプ化したす .foo フィヌルド
別々の配列に分割し、これらすべおの配列をより倧きな配列の芁玠ずしお生成したす。
の倀で゜ヌト .foo フィヌルド。

フィヌルドアクセスだけでなく、任意のjq匏を代わりに䜿甚できたす .foo。 仕分け
順序は、 sort 䞊蚘の機胜。

jqÂŽgroup_by.foo ÂŽ
[{"foo"1、 "bar"10}、{"foo"3、 "bar"100}、{"foo"1、 "bar"1}]
=> [[{"foo"1、 "bar"10}、{"foo"1、 "bar"1}]、[{"foo"3、 "bar"100}]]

分 max、 min_bypath_exp、 max_bypath_exp
入力配列の最小芁玠たたは最倧芁玠を芋぀けたす。

  min_bypath_exp & max_bypath_exp 関数を䜿甚するず、特定のを指定できたす
調べるフィヌルドたたはプロパティ、䟋 min_by.foo 最小のオブゞェクトを怜玢したす foo
フィヌルド。

jqÂŽminÂŽ
【5,4,2,7]
=> 2

jqÂŽmax_by.foo ÂŽ
[{"foo"1、 "bar"14}、{"foo"2、 "bar"3}]
=> {"foo"2、 "bar"3}

個性的、 unique_bypath_exp
  ナニヌク 関数は入力ずしお配列を受け取り、同じ芁玠の配列を生成したす。
重耇を削陀しお、䞊べ替えられた順序。

  unique_bypath_exp 関数は、によっお取埗された倀ごずにXNUMX぀の芁玠のみを保持したす
匕数を適甚したす。 すべおからXNUMX぀の芁玠を取り出しお配列を䜜成するこずず考えおください
によっお生成されたグルヌプ グルヌプヘッド.

jq「ナニヌク」
【1,2,5,3,5,3,1,3]
=> [1,2,3,5]

jqÂŽunique_by.foo ÂŽ
[{"foo"1、 "bar"2}、{"foo"1、 "bar"3}、{"foo"4、 "bar"5}]
=> [{"foo"1、 "bar"2}、{"foo"4、 "bar"5}]

jqÂŽunique_bylength ÂŽ
[「分厚い」、「ベヌコン」、「子猫」、「蝉」、「アスパラガス」]
=> ["ベヌコン"、 "分厚い"、 "アスパラガス"]

逆
この関数は配列を反転したす。

jq「リバヌス」
【1,2,3,4]
=> [4,3,2,1]

containselement
フィルタヌ 含むb bが入力内に完党に含たれおいる堎合、trueを生成したす。 A
BがAの郚分文字列である堎合、文字列Bは文字列Aに含たれたす。配列Bはに含たれたす。
Bのすべおの芁玠がAの任意の芁玠に含たれおいる堎合は、配列A。オブゞェクトBは
Bのすべおの倀がAの倀に含たれおいる堎合、オブゞェクトAに含たれたす。
同じキヌ。 他のすべおのタむプは、それらが等しい堎合、互いに含たれおいるず芋なされたす。

jqÂŽcontains "bar" ÂŽ
「foobar」
=> true

jqÂŽcontains["baz"、 "bar"] ÂŽ
["foobar"、 "foobaz"、 "blarp"]
=> true

jqÂŽcontains["bazzzzz"、 "bar"] ÂŽ
["foobar"、 "foobaz"、 "blarp"]
=> false

jqÂŽcontains{foo12、bar[{barp12}]} ÂŽ
{"foo"12、 "bar"[1,2、{"barp"​​12、 "blip"13}]}
=> true

jqÂŽcontains{foo12、bar[{barp15}]} ÂŽ
{"foo"12、 "bar"[1,2、{"barp"​​12、 "blip"13}]}
=> false

むンデックス
のむンデックスを含む配列を出力したす . コラボレヌ s 発生したす。 入力は配列である可胜性がありたす。
どちらの堎合 s が配列の堎合、むンデックス出力は、のすべおの芁玠が .
のそれらに䞀臎したす s.

jqÂŽindices "、" ÂŽ
「a、b、cd、efg、hijk」
=> [3,7,12]

jqŽ玢匕1 ÂŽ
【0,1,2,1,3,1,4]
=> [1,3,5]

jqÂŽindices[1,2] ÂŽ
【0,1,2,3,1,4,2,5,1,2,6,7]
=> [1,8]

むンデックス、 rindexs
最初のむンデックスを出力したすindexたたは最埌むンデックスの発生 s 入力で。

jqÂŽindex "、" ÂŽ
「a、b、cd、efg、hijk」
=> 3

jqÂŽrindex "、" ÂŽ
「a、b、cd、efg、hijk」
=> 12

内郚
フィルタヌ 内郚b 入力がb内に完党に含たれおいる堎合、trueが生成されたす。 これ
本質的に、の逆バヌゞョンです 含たれおいたす.

jqÂŽinside "foobar" ÂŽ
"バヌ"
=> true

jqÂŽinside["foobar"、 "foobaz"、 "blarp"] ÂŽ
["baz"、 "bar"]
=> true

jqÂŽinside["foobar"、 "foobaz"、 "blarp"] ÂŽ
["bazzzzz"、 "bar"]
=> false

jqÂŽinside{"foo"12、 "bar"[1,2、{"barp"​​12、 "blip"13}]} ÂŽ
{"foo"12、 "bar"[{"barp"​​12}]}
=> true

jqÂŽinside{"foo"12、 "bar"[1,2、{"barp"​​12、 "blip"13}]} ÂŽ
{"foo"12、 "bar"[{"barp"​​15}]}
=> false

startwithstr
出力 true もしも 。 指定された文字列匕数で始たりたす。

jqÂŽ [。[] | startupswith "foo"] ÂŽ
["fo"、 "foo"、 "barfoo"、 "foobar"、 "barfoob"]
=> [false、true、false、true、false]

endswithstr
出力 true もしも 。 指定された文字列匕数で終了したす。

jqÂŽ [。[] | endswith "foo"] ÂŽ
["foobar"、 "barfoo"]
=> [false、true]

組み合わせ、 組み合わせn
入力配列内の配列の芁玠のすべおの組み合わせを出力したす。 䞎えられた堎合
匕数 n、それはのすべおの組み合わせを出力したす n 入力配列の繰り返し。

jq「組み合わせ」
[[1,2]、[3、4]]
=> [1、3]、[1、4]、[2、3]、[2、4]

jqŽ組み合わせ2 ÂŽ
[0、1]
=> [0、0]、[0、1]、[1、0]、[1、1]

ltrimstrstr
指定されたプレフィックス文字列で始たる堎合は、削陀された入力を出力したす。

jqÂŽ [。[] | ltrimstr "foo"] ÂŽ
["fo"、 "foo"、 "barfoo"、 "foobar"、 "afoo"]
=> ["fo"、 ""、 "barfoo"、 "bar"、 "afoo"]

rtrimstrstr
指定されたサフィックス文字列が最埌にある堎合は、それを削陀しお入力を出力したす。

jqÂŽ [。[] | rtrimstr "foo"] ÂŽ
["fo"、 "foo"、 "barfoo"、 "foobar"、 "foob"]
=> ["fo"、 ""、 "bar"、 "foobar"、 "foob"]

爆発する
入力文字列を文字列のコヌドポむント番号の配列に倉換したす。

jq「爆発」
「foobar」
=> [102,111,111,98,97,114]

爆瞮する
爆発の逆。

jq「implode」
[65、66、67]
=>「ABC」

split
セパレヌタ匕数で入力文字列を分割したす。

jqÂŽsplit "、" ÂŽ
「a、b、c、d、e、」
=> ["a"、 "b、c、d"、 "e"、 ""]

joinstr
匕数を区切り文字ずしお䜿甚しお、入力ずしお指定された芁玠の配列を結合したす。 それは
の逆 split぀たり、実行䞭 split "foo" | join "foo" 任意の入力文字列に察しお
䞊蚘の入力文字列を返したす。

jqÂŽjoin "、" ÂŽ
["a"、 "b、c、d"、 "e"]
=> "a、b、c、d、e"

ascii_downcase、 ascii_upcase
アルファベット文字azおよびAZを次のように倉換した入力文字列のコピヌを発行したす。
指定されたケヌス。

whilecond; 曎新
  whilecond; 曎新 関数を䜿甚するず、曎新を繰り返し適甚できたす . たで 条件
は停です。

泚意しおください whilecond; 曎新 内郚的には再垰的なjq関数ずしお定矩されおいたす。 再垰的
内の呌び出し while 次の堎合、远加のメモリを消費したせん update 最倧でXNUMX぀を生成したす
各入力の出力。 以䞋の高床なトピックを参照しおください。

jqÂŽ [while。<100;。* 2] ÂŽ
1
=> [1,2,4,8,16,32,64]

untilcond; 次
  untilcond; 次 関数を䜿甚するず、匏を繰り返し適甚できたす 次の,
最初に . その埌、独自の出力に 条件 本圓です。 たずえば、これを䜿甚できたす
階乗関数を実装したす以䞋を参照。

泚意しおください untilcond; 次 内郚的には再垰的なjq関数ずしお定矩されおいたす。 再垰的
内の呌び出し それたで 次の堎合、远加のメモリを消費したせん 次の 最倧でXNUMX぀を生成したす
各入力の出力。 以䞋の高床なトピックを参照しおください。

jqÂŽ [。、1] | until。[0] <1; [。[0] -1、。[1] *。[0]]|。[1] ÂŽ
4
=> 24

recursef、 再垰、 recursef; 調子、 再垰_ダりン
  recursef 関数を䜿甚するず、再垰構造を怜玢しお抜出できたす
すべおのレベルからの興味深いデヌタ。 入力がファむルシステムを衚すず仮定したす。

{"名前" "/"、 "子䟛"[
{"名前" "/ binに"、 "子䟛達" [
{"名前" "/ bin / ls"、 "子䟛達" []}、
{"名前" "/bin/sh"、 "子䟛達" []}]}、
{"名前" "/ホヌム"、 "子䟛達" [
{"名前" "/ home / stephen"、 "子䟛"[
{"name" "/ home / stephen / jq"、 "children"[]}]}]}]}

ここで、存圚するすべおのファむル名を抜出するずしたす。 取埗する必芁がありたす .nameの,
.children []。name, .children []。children []。name、 等々。 これは次の方法で実行できたす。

recurse.children []| 。名前

匕数なしで呌び出された堎合、 再垰 に盞圓したす recurse。[].

recursef ず同じです recursef; . != ヌル 心配するこずなく䜿甚できたす
再垰の深さ。

recursef; 状態 を攟出するこずから始たるゞェネレヌタです。 その埌、順番に攟出したす
。| f 、。 | f | f 、。 | f | f | f、...蚈算倀が条件を満たす限り。 にずっお
たずえば、すべおの敎数を生成するには、少なくずも原則ずしお、次のように曞くこずができたす。 recurse。+ 1;
真.

埓来の理由で、 再垰_ダりン 呌び出しの゚むリアスずしお存圚したす 再垰 匕数なし。
この゚むリアスは考慮されたす 非掚奚の 次のメゞャヌリリヌスで削陀されたす。

の再垰呌び出し 再垰 い぀でも远加のメモリを消費したせん f で生産
各入力に察しおほずんど単䞀の出力。

jqÂŽrecurse.foo [] ÂŽ
{"foo"[{"foo"[]}、{"foo"[{"foo"[]}]}]}
=> {"foo"[{"foo"[]}、{"foo"[{"foo"[]}]}]}、{"foo"[]}、{"foo" [{"foo"[]}]}、{"foo"[]}

jq「recurse」
{"a"0、 "b"[1]}
=> {"a"0、 "b"[1]}、0、[1]、1

jqÂŽrecurse。*。;。<20 ÂŽ
2
=> 2、4、16

..
の省略圢 再垰 匕数なし。 これは、XPathに䌌せるこずを目的ずしおいたす //
オペレヌタヌ。 ご了承ください ..ず 動䜜したせん; 䜿甚する .. | a 代わりは。 以䞋の䟋では、
.. | .a 「䞋」にあるオブゞェクトのオブゞェクトキヌ「a」のすべおの倀を芋぀けるには ..

jqÂŽ .. | .a ÂŽ
[[{"a"1}]]
=> 1

env
jqの環境を衚すオブゞェクトを出力したす。

jqÂŽenv.PAGERÂŽ
ヌル
=>「少ない」

転眮
ギザギザの可胜性のある行列配列の配列を転眮したす。 行にはnullが埋め蟌たれるため、
結果は垞に長方圢です。

jq「転眮」
[[1]、[2,3]]
=> [[1,2]、[null、3]]

bsearchx
bsearchxは、入力配列内のxの二分探玢を実行したす。 入力が゜ヌトされおいる堎合
xが含たれおいる堎合、bsearchxは配列内のむンデックスを返したす。 それ以倖の堎合、配列が
䞊べ替えるず、-1-ixが返されたす。ここで、ixは、配列が
ixにxを挿入した埌も゜ヌトされたす。 配列が゜ヌトされおいない堎合、bsearchx
おそらく関心のない敎数を返したす。

jqÂŽbサヌチ0 ÂŽ
【0,1]
=> 0

jqÂŽbサヌチ0 ÂŽ
【1,2,3]
=> -1

jqÂŽbサヌチ4$ ixずしお| $ ix <0の堎合。[-1 + $ ix] = 4else。 終わり
【1,2,3]
=> [1,2,3,4]

文字列 補間 - \foo
文字列内では、バックスラッシュの埌に匏をparens内に配眮できたす。 䜕でも
匏の戻り倀は文字列に補間されたす。

jqÂŽ "入力は\。でした。これは\。+ 1よりXNUMX぀少ないです" ÂŽ
42
=>「入力は42でした。これは43よりXNUMX぀少ないです」

倉換 ぞ/から JSONの
  トゞ゜ン & fromjson ビルトむンは倀をJSONテキストずしおダンプするか、JSONテキストを解析しお
それぞれ倀。 tojsonビルトむンは、tostringが返すずいう点でtostringずは異なりたす。
文字列は倉曎されたせんが、tojsonは文字列をJSON文字列ずしお゚ンコヌドしたす。

jqÂŽ [。[] | tostring] ÂŽ
[1、 "foo"、["foo"]]
=> ["1"、 "foo"、 "[\" foo \ "]"]

jqÂŽ [。[] | tojson] ÂŽ
[1、 "foo"、["foo"]]
=> ["1"、 "\" foo \ ""、 "[\" foo \ "]"]

jqÂŽ [。[] | tojson | fromjson] ÂŽ
[1、 "foo"、["foo"]]
=> [1、 "foo"、["foo"]]

フォヌマット ストリング & 逃げる
  @フヌ 構文は、文字列のフォヌマットず゚スケヌプに䜿甚されたす。これは、URLの構築に圹立ちたす。
HTMLやXMLなどの蚀語のドキュメント。 @フヌ 䞊のフィルタヌずしお䜿甚できたす
それ自䜓、可胜な゚スケヌプは次のずおりです。

@文章:

コヌ​​ル ひも、詳现に぀いおは、その関数を参照しおください。

@json:

入力をJSONずしおシリアル化したす。

@html:

文字をマッピングするこずにより、HTML / XML゚スケヌプを適甚したす <> ÂŽ" 圌らの実䜓に
同等物 <, >, ず, ', 「.

@uri:

すべおの予玄枈みURI文字をにマッピングするこずにより、パヌセント゚ンコヌドを適甚したす XX シヌケンス。

@csv:

入力は配列である必芁があり、二重匕甚笊付きのCSVずしおレンダリングされたす。
文字列、および匕甚笊は繰り返しによっお゚スケヌプされたす。

@tsv:

入力は配列である必芁があり、TSVタブ区切り倀ずしおレンダリングされたす。 各
入力配列はXNUMX行で出力されたす。 フィヌルドは単䞀のタブで区切られたす
ASCII 0x09。 入力文字の改行ASCII 0x0a、キャリッゞリタヌンASCII
0x0d、タブASCII 0x09およびバックスラッシュASCII 0x5c゚スケヌプずしお出力されたす
シヌケンス \n, \r, \t, \\ 。

@sh:

入力は、POSIXシェルのコマンドラむンでの䜿甚に適した圢で゚スケヌプされたす。 の堎合
入力は配列であり、出力は䞀連のスペヌスで区切られた文字列になりたす。

@ base64:

入力は、RFC64で指定されおいるbase4648に倉換されたす。

この構文は、䟿利な方法で文字列補間ず組み合わせるこずができたす。 あなたはフォロヌするこずができたす
@フヌ 文字列リテラルを含むトヌクン。 文字列リテラルの内容は 逃げる。
ただし、その文字列リテラル内で行われたすべおの補間ぱスケヌプされたす。 䟋えば、

@uri "https://www.google.com/search?q=\(.search"

入力に察しお次の出力を生成したす {"怜玢" "䜕 is jq "}:

「https://www.google.com/search?q=what%20is%20jq%3F」

URLのスラッシュ、疑問笊などは䞀郚であるため、゚スケヌプされないこずに泚意しおください。
文字列リテラルの。

jqÂŽ @ htmlÂŽ
「これはx <yの堎合に機胜したす」
=> "これはx <yの堎合に機胜したす"

jqÂŽ @ sh "echo \。" ÂŽ
「オハラ゚ヌル」
=> "echoÂŽOÂŽ \\ÂŽÂŽHaraÂŽ \\ÂŽÂŽs AleÂŽ"

詊合日
jqは、いく぀かの基本的な日付凊理機胜ず、いく぀かの高レベルおよび䜎レベルを提䟛したす
ビルトむン。 すべおの堎合においお、これらのビルトむンはUTCの時刻のみを凊理したす。

  fromdateiso8601 ビルトむンは、ISO8601圢匏の日時を秒数に解析したす
Unix゚ポック1970-01-01T000000Z以降。 The 今日iso8601 ビルトむンはその逆を行いたす。

  日付から ビルトむンは日時文字列を解析したす。 珟圚 日付から ISO8601のみをサポヌト
日時文字列ですが、将来的には、より倚くの日時文字列を解析しようずしたす
フォヌマット。

  珟圚たで ビルトむンはの゚むリアスです 今日iso8601.

  今 ビルトむンは、Unix゚ポックからの珟圚の時刻を秒単䜍で出力したす。

Cラむブラリの時間関数ぞの䜎レベルのjqむンタヌフェむスも提䟛されおいたす。 strptime,
ストラフタむム, ゚ムクタむム, グラムタむム。 に぀いおは、ホストオペレヌティングシステムのドキュメントを参照しおください。
によっお䜿甚されるフォヌマット文字列 strptime & ストラフタむム。 泚これらは必ずしも安定しおいるずは限りたせん
特にロヌカリれヌション機胜に関しお、jqのむンタヌフェヌス。

  グラムタむム ビルトむンはUnix゚ポックから数秒を消費し、「壊れた」を出力したす
ダりンタむム」を衚す数倀の配列ずしおの時間の衚珟この順序で
幎、月れロベヌス、月の日、時間、分
時間、秒、曜日、および幎の日-すべお
特に明蚘されおいない限り、XNUMXベヌス。

  ゚ムクタむム ビルトむンは、によっお出力された時間の「分解された時間」衚珟を消費したす グラムタむム
& strptime.

  strptimefmt ビルトむンは、に䞀臎する入力文字列を解析したす FMT 口論。 出力はにありたす
によっお消費される「故障時間」衚珟 グラムタむム ず出力 ゚ムクタむム.

  strftimefmt ビルトむンは、指定された圢匏で時刻をフォヌマットしたす。

のフォヌマット文字列 strptime & ストラフタむム 兞型的なCラむブラリで説明されおいたす
ドキュメンテヌション。 ISO8601日時のフォヌマット文字列は次のずおりです。 "Y-m-dTHMSZ".

jqは、䞀郚のシステムでこの日付機胜の䞀郚たたはすべおをサポヌトしない堎合がありたす。

jq「fromdate」
"2015-03-05T23:51:47Z"
=> 1425599507

jqÂŽstrptime "Y-m-dTHMSZ" ÂŽ
"2015-03-05T23:51:47Z"
=> [2015,2,5,23,51,47,4,63]

jqÂŽstrptime "Y-m-dTHMSZ"| mktimeÂŽ
"2015-03-05T23:51:47Z"
=> 1425599507

条件 そしお 比范


==、 !=
匏「a == b」は、aずbの結果が等しい堎合぀たり、
それらが同等のJSONドキュメントを衚す堎合、それ以倖の堎合は「false」。 特に、文字列
数倀ず等しいずは芋なされたせん。 Javascriptを䜿甚しおいる堎合、jqÂŽs ==は次のようになりたす。
Javascriptの===-倀が同じである堎合にのみ等しい倀を考慮したす
同じ倀。

=は「等しくない」であり、Ža= bŽはŽa == bŽの反察の倀を返したす。

jqŽ。[] == 1ÂŽ
[1、1.0、 "1"、 "バナナ"]
=> true、true、false、false

if-then-else
if A その埌 B ほかに C end ず同じように動䜜したす B if A falseたたは
nullですが、同じように動䜜したす C さもないず。

falseたたはnullのチェックは、Javascriptに芋られるよりも単玔な「真実性」の抂念です。
たたはPythonですが、条件に぀いおより明確にする必芁がある堎合があるこずを意味したす
あなたが望む䟋えば、文字列が空であるかどうかをテストするこずはできたせん if .nameの その埌 A ほかに B end,
あなたはもっず䌌たようなものが必芁になりたす if 。名前 | 長さ > 0 その埌 A ほかに B end を代わりにお䜿いください。

条件Aが耇数の結果を生成する堎合、それらのいずれかが「真」であるず芋なされたす
結果はfalseたたはnullではありたせん。 結果がれロの堎合、それは誀りず芋なされたす。

䜿甚しおいる堎合は、さらに倚くのケヌスを远加できたす elif A その埌 B 構文。

jqÂŽif。 == 0その埌

「れロ」elif。 == 1 then "one" else "many" endÂŽ 2 => "many"

>, > =、 <=、 <
比范挔算子 >, >=, <=, < 巊の匕数がより倧きいかどうかを返したす。
正しい匕数以䞊、以䞋、たたは以䞋
それぞれ。

順序は、に぀いお説明したものず同じです。 sort、䞊蚘。

jqŽ。 <5ÂŽ
2
=> true

および/たたは/
jqは、通垞のブヌル挔算子および/たたはnotをサポヌトしたす。 圌らは同じ真実の基準を持っおいたす
匏-falseずnullは「false倀」ず芋なされ、それ以倖は
"本圓の䟡倀"。

これらの挔算子のXNUMX぀のオペランドが耇数の結果を生成する堎合、挔算子自䜓
入力ごずに結果が生成されたす。

実際には、挔算子ではなく組み蟌み関数であるため、フィルタヌずしお呌び出されたす。
のように、特別な構文ではなく、パむプできるもの .foo & 。バヌ | .

これらのXNUMX぀は、「true」ず「false」の倀のみを生成するため、本物の堎合にのみ圹立ちたす。
の䞀般的なPerl / Python / Rubyむディオムではなく、ブヌル挔算
「value_that_may_be_nullたたはデフォルト」。 この圢匏の「たたは」を䜿甚する堎合は、
条件を評䟡するのではなく、XNUMX぀の倀に぀いおは、以䞋の「//」挔算子を参照しおください。

jq ÂŽ42ず「文字列」 ÂŽ
ヌル
=> true

jqŽtrue、falseたたはfalseÂŽ
ヌル
=>真、停

jqŽtrue、trueおよびtrue、false ÂŽ
ヌル
=> true、false、true、false

jqÂŽ [true、false | いいえ
ヌル
=> [false、true]

Alternative オペレヌタ - //
フォヌムのフィルタヌ a // b ず同じ結果を生成したす a、もし a その他の結果を生成したす
より false & ヌル。 さもないず、 a // b ず同じ結果を生成したす b.

これは、デフォルトを提䟛するのに圹立ちたす。 .foo // 1 に評䟡されたす 1 ない堎合 .foo
入力の芁玠。 それはどのように䌌おいたす or Pythonで䜿甚されるこずもありたすjqÂŽs or オペレヌタ
厳密にブヌル挔算甚に予玄されおいたす。

jqÂŽ.foo // 42ÂŽ
{"foo"19}
=> 19

jqÂŽ.foo // 42ÂŽ
{}
=> 42

トラむキャッチ
を䜿甚しお゚ラヌをキャッチできたす 詊したす EXP キャッチ EXP。 最初の匏が実行され、
倱敗するず、XNUMX番目が゚ラヌメッセヌゞずずもに実行されたす。 ハンドラヌの出力
anyは、詊行する匏の出力であるかのように出力されたす。

  詊したす EXP フォヌムの䜿甚 空の 䟋倖ハンドラずしお。

jqÂŽtry .a catch "。isnota object" ÂŽ
true
=>「。はオブゞェクトではありたせん」

jqÂŽ [。[] | try .a] ÂŽ
[{}、true、{"a"1}]
=> [null、1]

jqÂŽtry error "some exception"catch .ÂŽ
true
=>「いく぀かの䟋倖」

砎壊 でる of コントロヌル 構造
try / catchの䟿利な䜿甚法は、次のような制埡構造から抜け出すこずです。 枛らしたす, foreachの,
while、などなど。

䟋

「break」が発生するたで匏を繰り返したす
゚ラヌが発生したら、゚ラヌを再発生させずに繰り返しを停止したす。
しかし、キャッチされた゚ラヌが「ブレヌク」でない堎合は、それを再発生させたす。
repeatexpcatch。== "break"を詊しおから、else゚ラヌを空にしおください。

jqには、名前付き字句ラベルを「ブレヌク」たたは「移動戻る」するための構文がありたす。

ラベル$ out | ... $ outã‚’ç Žã‚‹..。

  ç Žã‚‹ $ label_name 匏により、プログラムは最も近いもののように動䜜したす
巊の方です ラベル $ label_name 生産 空の.

ずの関係 ç Žã‚‹ 察応する ラベル 字句ですラベルは
䌑憩から「芋える」。

から抜け出すには 枛らしたすたずえば、次の

ラベル$ out | 。[]を$ itemずしお削枛したすnull;。== falseの堎合は$ outをブレヌクしたすelse ... end

次のjqプログラムは、構文゚ラヌを生成したす。

$ outã‚’ç Žã‚‹

ラベルがないので $ out 芋えたす。

? オペレヌタ
  ? 挔算子、ずしお䜿甚 EXP、はの省略圢です 詊したす EXP.

jqÂŽ [。[] |.a] ÂŽ
[{}、true、{"a"1}]
=> [null、1]

REGULAR 衚珟 PCRE


jqは、php、ruby、TextMate、Sublime Text、
などなので、ここでの説明はjqの詳现に焊点を圓おたす。

jq正芏衚珟フィルタヌは、次のいずれかのパタヌンを䜿甚しお䜿甚できるように定矩されおいたす。

文字列| FILTER正芏衚珟
文字列| FILTER正芏衚珟;フラグ
文字列| FILTER[正芏衚珟]
文字列| FILTER[正芏衚珟、フラグ]

ここで、* STRING、REGEX、およびFLAGSはjq文字列であり、jq文字列補間の察象です。 *
文字列補間埌のREGEXは、有効なPCRE正芏衚珟である必芁がありたす。 * FILTERは test,
match たたは キャプチャヌ、以䞋に説明したす。

FLAGSは、サポヌトされおいるフラグのXNUMX぀以䞊で構成される文字列です。

· g -グロヌバル怜玢最初の䞀臎だけでなく、すべおの䞀臎を怜玢

· i -倧文字ず小文字を区別しない怜玢

· m -マルチラむンモヌドŽ.Žは改行に䞀臎したす

· n -空の䞀臎を無芖したす

· p -sモヌドずmモヌドの䞡方が有効になっおいる

· s -単線モヌド ÂŽ^ÂŽ->ÂŽ \ AŽ、 ÂŽ$ÂŽ->ÂŽ \ ZŽ

· l -可胜な限り長い䞀臎を芋぀ける

· x -拡匵正芏衚珟圢匏空癜ずコメントを無芖

xパタヌンの空癜を䞀臎させるには、\ sなどの゚スケヌプを䜿甚したす。

・test "a \ sb"、 "x"。

特定のフラグもREGEX内で指定できるこずに泚意しおください。

・jq -nŽ "test"、 "TEst"、 "teST"、 "TEST"| test "ite-ist" ÂŽ

評䟡true、true、false、false。

[必芁 1.5] testval、 test正芏衚珟; フラグ
いいね match 、ただし、䞀臎オブゞェクトは返したせん。 true or false かどうかのために
正芏衚珟は入力ず䞀臎したす。

jqÂŽtest "foo" ÂŽ
「フヌ」
=> true

jqŽ。[] | test "abcスペヌスは無芖されたす"; "ix" ÂŽ
["xabcd"、 "ABC"]
=>真、真

[必芁 1.5] matchval、 match正芏衚珟; フラグ
match 芋぀かった䞀臎ごずにオブゞェクトを出力したす。 䞀臎には次のフィヌルドがありたす。

· オフセット -入力の先頭からのUTF-8コヌドポむントのオフセット

· 長さ -䞀臎のUTF-8コヌドポむントの長さ

· 文字列 -䞀臎した文字列

· キャプチャ -キャプチャグルヌプを衚すオブゞェクトの配列。

グルヌプオブゞェクトのキャプチャには、次のフィヌルドがありたす。

· オフセット -入力の先頭からのUTF-8コヌドポむントのオフセット

· 長さ -このキャプチャグルヌプのUTF-8コヌドポむントの長さ

· 文字列 -キャプチャされた文字列

· 名 -キャプチャグルヌプの名前たたは ヌル 名前がない堎合

䜕にも䞀臎しなかったグルヌプをキャプチャするず、-1のオフセットが返されたす

jqÂŽmatch "abc+"; "g" ÂŽ
「abcabc」
=> {"offset"0、 "length"3、 "string" "abc"、 "captures"[{"offset"0、 "length"3、 "string" "abc"、 " name "null}]}、{" offset "4、" length "3、" string "" abc "、" captions "[{" offset "4、" length "3、" string "  "abc"、 "name"null}]}

jqÂŽmatch "foo" ÂŽ
「foobarfoo」
=> {"offset"0、 "length"3、 "string" "foo"、 "captures"[]}

jqÂŽmatch["foo"、 "ig"] ÂŽ
「foobarFOO」
=> {"offset"0、 "length"3、 "string" "foo"、 "captures"[]}、{"offset"8、 "length"3、 "string" "FOO "、"キャプチャ "[]}

jqÂŽmatch "foo バヌ foo ";" ig " ÂŽ
「foobarfoo foofoo」
=> {"offset"0、 "length"11、 "string" "foo bar foo"、 "captures"[{"offset"4、 "length"3、 "string" "bar" 、 "name" "bar123"}]}、{"offset"12、 "length"8、 "string" "foo foo"、 "captures"[{"offset"-1、 "length" 0、 "文字列"null、 "名前" "bar123"}]}

jqÂŽ [match "。"; "g"] | 長さ
「abc」
=> 3

[必芁 1.5] キャプチャval、 キャプチャ正芏衚珟; フラグ
名前付きキャプチャをJSONオブゞェクトに収集し、各キャプチャの名前をキヌずしお、
察応する倀ずしお䞀臎した文字列。

jqÂŽcapture " [az] +- [0-9] + " ÂŽ
「xyzzy-14」
=> {"a" "xyzzy"、 "n" "14"}

[必芁 1.5] scanregex、 scanregex; フラグ
の正芏衚珟に䞀臎する入力の重耇しないサブストリングのストリヌムを出力したす
フラグが指定されおいる堎合は、フラグに埓いたす。 䞀臎するものがない堎合、ストリヌムは
空の。 各入力文字列のすべおの䞀臎をキャプチャするには、むディオムを䜿甚したす [ 匏 ]、䟋えば [
scanregex ].

split正芏衚珟; フラグ
䞋䜍互換性のために、 split 正芏衚珟ではなく、文字列で分割したす。

[必芁 1.5] 分割正芏衚珟、 splits正芏衚珟; フラグ
これらは圌らず同じ結果を提䟛したす split 察応するものですが、代わりにストリヌムずしお
アレむ。

[必芁 1.5] sub正芏衚珟; tostring sub正芏衚珟; ストリング; フラグ
入力文字列の正芏衚珟の最初の䞀臎を次のように眮き換えお取埗した文字列を出力したす
ひも、補間埌。 ひも jq文字列である必芁があり、参照を含めるこずができたす
名前付きキャプチャに。 名前付きキャプチャは、事実䞊、JSONオブゞェクトずしお衚瀺されたす
によっお構築された キャプチャヌぞ ひも、したがっお、「x」ずいう名前のキャプチャされた倉数ぞの参照は
「.x」の圢匏を取りたす。

[必芁 1.5] gsub正芏衚珟; ストリング、 gsub正芏衚珟; ストリング; フラグ
gサブ のようなものです 以䞋 ただし、重耇しない正芏衚珟はすべお、
文字列、補間埌。

高床な 商品特城


倉数はほずんどのプログラミング蚀語で絶察に必芁ですが、降栌されおいたす
jqの「高床な機胜」に。

ほずんどの蚀語では、倉数はデヌタを枡す唯䞀の手段です。 あなたが蚈算する堎合
倀であり、それを耇数回䜿甚する堎合は、倉数に栌玍する必芁がありたす。 に
プログラムの別の郚分に倀を枡すず、プログラムのその郚分が
配眮する倉数を関数パラメヌタヌ、オブゞェクトメンバヌなどずしお定矩したす
デヌタ。

jqで関数を定矩するこずも可胜ですが、これは最倧の機胜です。
䜿甚はjqの暙準ラむブラリを定矩するこずです 地図 & find 実際に
jqで曞かれおいたす。

jqにはリダクション挔算子がありたす。これは非垞に匷力ですが、少し泚意が必芁です。 繰り返したすが、これらは
䞻に内郚で䜿甚され、jqの暙準ラむブラリのいく぀かの有甚なビットを定矩したす。

最初は明らかではないかもしれたせんが、jqはすべおゞェネレヌタヌに関するものですはい、よく芋られるように
他の蚀語。 ゞェネレヌタヌの凊理を支揎するために、いく぀かのナヌティリティが提䟛されおいたす。

いく぀かの最小限のI / Oサポヌト暙準入力からJSONを読み取り、JSONを
暙準出力が利甚可胜です。

最埌に、モゞュヌル/ラむブラリシステムがありたす。

Variables
jqでは、すべおのフィルタヌに入力ず出力があるため、手動で配管する必芁はありたせん。
プログラムのある郚分から次の郚分に倀を枡したす。 たずえば、倚くの衚珟 a + b,
入力をXNUMX぀の異なる郚分匏に枡したすここでは a & b 䞡方ずも同じように枡されたす
inputなので、倀をXNUMX回䜿甚するために、通垞、倉数は必芁ありたせん。

たずえば、数倀の配列の平均倀を蚈算するには、いく぀かの必芁がありたす
ほずんどの蚀語の倉数-配列を保持するために少なくずもXNUMX぀、おそらく各芁玠にXNUMX぀
たたはルヌプカりンタヌの堎合。 jqでは、それは単に 加えたす / 長さ - 加えたす 匏は䞎えられたす
配列し、その合蚈を生成し、 長さ 匏に配列が䞎えられ、その配列が生成されたす
長さ

したがっお、䞀般的に、倉数を定矩するよりも、jqのほずんどの問題を解決するためのよりクリヌンな方法がありたす。
それでも、時々それらは物事を簡単にするので、jqはあなたがを䜿っお倉数を定矩するこずを可胜にしたす
衚珟 as $倉数。 すべおの倉数名はで始たりたす $。 これは少し醜いバヌゞョンです
配列平均の䟋の䟋

$ array_lengthずしおの長さ| 远加/ $ array_length

倉数を実際に䜿甚する状況を芋぀けるには、より耇雑な問題が必芁になりたす
私たちの生掻を楜にしたす。

「䜜成者」フィヌルドず「タむトル」フィヌルドを含む䞀連のブログ投皿があり、別のブログ投皿があるずしたす。
著者のナヌザヌ名を実際の名前にマップするために䜿甚されるオブゞェクト。 入力は次のようになりたす。

{"投皿"[{"タむトル" "最初のpsot"、 "著者" "anon"}、
{"タむトル" "よく曞かれた蚘事"、 "著者" "person1"}]、
"realnames"{"anon" "Anonymous Coward"、
"person1" "Person McPherson"}}

次のように、実際の名前を含む䜜成者フィヌルドを䜿甚しお投皿を䜜成したす。

{"title" "Frist psot"、 "author" "Anonymous Coward"}
{"タむトル" "よく曞かれた蚘事"、 "著者" "パヌ゜ンマクファヌ゜ン"}

埌で参照できるように、倉数$ namesを䜿甚しおrealnamesオブゞェクトを栌玍したす
著者のナヌザヌ名を怜玢する堎合

.realnames as $ names | .posts [] | {タむトル、䜜成者$ names [.author]}

衚珟 EXP as $x | ... 意味匏の倀ごずに EXP、残りを実行したす
元の入力党䜓を含むパむプラむン、および $x その倀に蚭定したす。 したがっお as
foreachルヌプのようなものずしお機胜したす。

同じように {ふヌ} 䟿利な曞き方です {foo .foo}ので、 {$ foo} 䟿利な曞き方です
{foo$ foo}.

単䞀の倉数を䜿甚しお耇数の倉数を宣蚀できたす as パタヌンを提䟛するこずによる衚珟
入力の構造ず䞀臎したすこれは「砎壊」ずしお知られおいたす

。 as {realnames$ names、posts[$ first、$ second]} | ..。

配列パタヌンの倉数宣蚀䟋 . as [$ first、 $ second]にバむンドする
配列の芁玠は、むンデックスXNUMXの芁玠から䞊に向かっお順番に入力されたす。 ないずき
配列パタヌン芁玠のむンデックスの倀、 ヌル その倉数にバむンドされおいたす。

倉数は、それらを定矩する匏の残りの郚分にスコヌプされるため、

.realnames as $ names | .posts [] | {タむトル、䜜成者$ names [.author]}

動䜜したすが

.realnames as $ names | .posts []| {タむトル、䜜成者$ names [.author]}

したせん。

プログラミング蚀語理論家にずっお、jq倉数は
字句スコヌプのバむンディング。 特に、バむンディングの倀を倉曎する方法はありたせん。
同じ名前の新しいバむンディングしか蚭定できたせんが、どこにも衚瀺されたせん
叀いものでした。

jqÂŽ.bar as $ x | .foo | 。 + $ xÂŽ
{"foo"10、 "bar"200}
=> 210

jqŽ。 as $ i | [。* 2 |。as$ i | $ i、$ i] ÂŽ
5
=> [10,5]

jqŽ。 as [$ a、$ b、{c$ c}] | $ a + $ b + $ cÂŽ
[2、3、{"c"4、 "d"5}]
=> 9

jqŽ。[] as [$ a、$ b] | {a$ a、b$ b} ÂŽ
[[0]、[0、1]、[2、1、0]]
=> {"a"0、 "b"null}、{"a"0、 "b"1}、{"a"2、 "b"1}

定矩 機胜
「def」構文を䜿甚しお、フィルタヌに名前を付けるこずができたす。

def増分。 + 1;

あれから、 増加 組み蟌み関数ず同じようにフィルタヌずしお䜿甚できたす実際、これは
いく぀かのビルトむンがどのように定矩されおいるかです。 関数は匕数を取るこずができたす

def mapf[。[] | f];

匕数は、倀ずしおではなく、フィルタヌずしお枡されたす。 同じ匕数を参照できたす
異なる入力で耇数回ここでは f 入力配列の芁玠ごずに実行されたす。
関数ぞの匕数は、倀の匕数よりもコヌルバックのように機胜したす。 これは
理解するこずが重芁です。 怜蚎

def fooff | f;
5 | foo。* 2

結果は20になりたす。 f is 。* 2、およびの最初の呌び出し䞭 f . 5になりたす
10回目は52 * 20になるため、結果はXNUMXになりたす。関数の匕数
はフィルタヌであり、フィルタヌは呌び出されたずきに入力を期埅したす。

単玔な関数を定矩するための倀匕数の動䜜が必芁な堎合は、
倉数

def addvalueff as $ f | map。+ $ f;

たたは、省略圢を䜿甚したす。

def addvalue$ f...;

どちらの定矩でも、 addvalue.foo 珟圚の入力を远加したす .foo それぞれぞのフィヌルド
配列の芁玠。

同じ関数名を䜿甚した耇数の定矩が蚱可されたす。 各再定矩は眮き換えられたす
同じ数の関数匕数に察する前の匕数ですが、
再定矩埌の関数たたはメむンプログラム。

jqÂŽdef addvaluef。 + [f]; mapaddvalue。[0] ÂŽ
[[1,2]、[10,20]]
=> [[1,2,1]、[10,20,10]]

jqÂŽdef addvalueff as $ x | map。+ $ x; addvalue。[0] ÂŽ
[[1,2]、[10,20]]
=> [[1,2,1,2]、[10,20,1,2]]

枛らす
  枛らしたす jqの構文を䜿甚するず、匏のすべおの結果を次のように組み合わせるこずができたす。
それらを単䞀の答えに蓄積したす。 䟋ずしお、合栌したす 【3,2,1] これに
匏

。[]を$ item0;。+ $ itemずしお枛らしたす

結果ごずに 。[] を生成し、 . + $ item 珟圚の合蚈を环積するために実行されたす、
0から開始したす。この䟋では、 。[] 結果3、2、および1が生成されるため、効果は次のようになりたす。
このようなものを実行するのず䌌おいたす

0 | $ item |。+ $ itemずしお3|
2 as $ item |。+ $ item|
$ item |。+ $ itemずしお1

jqÂŽreduce。[] as $ item0;。+ $ item ÂŽ
【10,2,5,3]
=> 20

limitn; exp
  制限 関数は最倧を抜出したす n からの出力 EXP.

jqÂŽ [limit3;。[]] ÂŽ
【0,1,2,3,4,5,6,7,8,9]
=> [0,1,2]

firstexpr、 lastexpr、 nthn; expr
  firstexpr & lastexpr 関数は、から最初ず最埌の倀を抜出したす 匏,
。

  nthn; expr 関数は、によっお出力されたn番目の倀を抜出したす 匏。 これは次のように定矩できたす
def nthn; expr lastlimitn + 1; expr;。 ご了承ください nthn; expr サポヌトしおいたせん
の負の倀 n.

jqÂŽ [firstrange。、lastrange。、nth./ 2; range。] ÂŽ
10
=> [0,9,5]

最初、 過去、 n番目n
  最初の & last 関数は、次の任意の配列から最初ず最埌の倀を抜出したす。 ..

  n番目n 関数は、で任意の配列のn番目の倀を抜出したす ..

jqÂŽ [range。] | [最初、最埌、 n番目の5] ÂŽ
10
=> [0,9,5]

foreachの
  foreachの 構文は次のようになりたす 枛らしたす、しかし、の構築を可胜にするこずを目的ずしおいたす 制限
䞭間結果を生成するレデュヌサヌ䟋を参照。

フォヌムは foreachの EXP as $ var 初期化; アップデヌト; ゚キス。 様 枛らしたす, INIT 評䟡されたす
状態倀を生成するためにXNUMX回、次に EXP にバむンドされおいたす $ var, UPDATE is
の出力ごずに評䟡 EXP 珟圚の状態ず $ var 芋える。 各倀
によっお出力 UPDATE 以前の状態を眮き換えたす。 ぀いに、 ゚キス 新しいごずに評䟡されたす
の出力を抜出する状態 foreachの.

これは䞻に構築にのみ圹立ちたす 枛らしたす - ず 制限-のような機胜。 しかし、それは
郚分的な削枛が可胜になるため、はるかに䞀般的です以䞋の䟋を参照。

jqÂŽ [foreach。[] as $ item[[]、[]]; if $ item == null then [[]、。[0]] else [。[0] + [$ item]、[ ]] end; $ item == nullの堎合、。[1] else empty end] ÂŽ
[1,2,3,4、null、 "a"、 "b"、null]
=> [[1,2,3,4]、["a"、 "b"]]

再垰
䞊蚘のように、 再垰 再垰を䜿甚し、任意のjq関数を再垰的にするこずができたす。 ザ
while 組み蟌みは再垰の芳点からも実装されおいたす。

末尟呌び出しは、再垰呌び出しの巊偎の匏が出力されるたびに最適化されたす
その最埌の倀。 実際には、これは再垰の巊偎の匏が
呌び出しは、入力ごずに耇数の出力を生成しおはなりたせん。

䟋

def recursefdef r。、f | select。= null| r; r;

def whilecond; update
def _while
cond then。、update | _whileelse empty end;
_その間;

def repeatexp
def _repeat
exp、_repeat;
_繰り返す;

ゞェネレヌタ & むテレヌタ
䞀郚のjq挔算子ず関数は、れロを生成できるずいう点で実際にはゞェネレヌタです。
他のプログラミングで予想されるように、入力ごずにXNUMX぀以䞊の倀
ゞェネレヌタヌを持぀蚀語。 䟋えば、 。[] 入力にすべおの倀を生成したす
配列たたはオブゞェクトである必芁がありたす、 range0; 10 0ずの間の敎数を生成したす
10 など。

コンマ挔算子でさえゞェネレヌタであり、最初に生成された倀を生成したす
カンマの巊偎の匏、次にそれらのそれぞれに぀いお、倀はによっお生成されたす
カンマの右偎の匏。

  空の ビルトむンはれロ出力を生成するゞェネレヌタです。 The 空の ビルトむン
前のゞェネレヌタ匏に戻りたす。

すべおのjq関数は、組み蟌みのゞェネレヌタヌを䜿甚するだけでゞェネレヌタヌにするこずができたす。 それも可胜です
再垰ずコンマ挔算子のみを䜿甚しお新しいゞェネレヌタヌを定矩したす。 再垰的な堎合
呌び出しが「テヌル䜍眮」にある堎合、ゞェネレヌタヌは効率的になりたす。 䟋では
による再垰呌び出しの䞋 _範囲 それ自䜓が尟の䜍眮にありたす。 䟋は自慢したす
XNUMX぀の高床なトピック末尟再垰、ゞェネレヌタヌの構築、およびサブ機胜。

jqÂŽdef rangeinit; upto; bydef _rangeifby> 0and。<uptoorby <0and。> uptothen。、。+ by| _rangeelse。 終わり; if by == 0 then init else init | _range end | selectby> 0and。<uptoorby <0and。> upto; range0; 10; 3 ÂŽ
ヌル
=> 0、3、6、9

jqÂŽdef whilecond; updatedef _whileif cond then。、update | _whileelse empty end; _その間; [while。<100;。* 2] ÂŽ
1
=> [1,2,4,8,16,32,64]

æ•°å­Š


jqは珟圚、IEEE754倍粟床64ビット浮動小数点数のみをサポヌトしおいたす。

次のような単玔な算術挔算子に加えお +、jqにはほずんどの暙準的な数孊関数もありたす
C数孊ラむブラリから。 単䞀の入力匕数を取るC数孊関数䟋 眪)
匕数がれロのjq関数ずしお䜿甚できたす。 XNUMX぀の入力を受け取るC数孊関数
匕数䟋 捕虜は、無芖するXNUMX぀の匕数のjq関数ずしお䜿甚できたす。 ..

暙準の数孊関数の可甚性は、察応する数孊関数の可甚性に䟝存したす
オペレヌティングシステムずC数孊ラむブラリの数孊関数。 利甚できない数孊関数
定矩されたすが、゚ラヌが発生したす。

I / O


珟時点では、jqはI / Oを最小限にサポヌトしおおり、ほずんどの堎合、い぀制埡するかずいう圢でサポヌトされおいたす。
入力が読み取られたす。 このためにXNUMX぀の組み蟌み関数が提䟛されおいたす。 & 入力、それは読んだ
同じ゜ヌスから䟋えば、 stdin、コマンドラむンで指定されたファむルjq自䜓ずしお。 これらは
XNUMX぀のビルトむン、およびjq独自の読み取りアクションは、盞互にむンタヌリヌブできたす。

XNUMX぀のビルトむンは、最小限の出力機胜を提䟛したす。 debug。 jqプログラムの
出力倀は垞にJSONテキストずしお出力されたす (Linuxで蚀うずころのstdout。 debug ビルトむンは持぀こずができたす
libjq C APIを䜿甚するが、そうではない実行可胜ファむルなど、アプリケヌション固有の動䜜
jq実行可胜ファむル自䜓。


XNUMX぀の新しい入力を出力したす。

入力
残りのすべおの入力をXNUMX぀ず぀出力したす。

これは䞻に、プログラムの入力を枛らす堎合に圹立ちたす。

debug
入力倀に基づいたデバッグメッセヌゞを生成したす。 jq実行可胜ファむルはラップしたす
入力倀 ["デバッグ"、 ] それず改行をstderrに出力したす。
コンパクトに。 これは将来倉曎される可胜性がありたす。

入力ファむル名
入力が珟圚フィルタリングされおいるファむルの名前を返したす。 これは
jqがUTF-8ロケヌルで実行されおいない限り、うたく機胜したせん。

入力行番号
珟圚フィルタリングされおいる入力の行番号を返したす。

STREAMING


- ストリヌム オプションjqは、入力テキストをストリヌミング方匏で解析できるため、jqが可胜になりたす。
解析埌ではなく、すぐに倧きなJSONテキストの凊理を開始するプログラム
完了したす。 サむズが1GBの単䞀のJSONテキストがある堎合、それをストリヌミングするず、
それをはるかに迅速に凊理したす。

ただし、jqプログラムのように、ストリヌミングを凊理するのは簡単ではありたせん。 [ 、
] および他のいく぀かの圢匏入力ずしお。

ストリヌムの凊理を容易にするために、いく぀かのビルトむンが提䟛されおいたす。

以䞋の䟋では、のストリヌミング圢匏を䜿甚しおいたす [0、[1]]ボタンの隣にある
[[0],0],[[1,0],1],[[1,0]],[[1]].

ストリヌミングフォヌムには次のものが含たれたす [ 、 ] 任意のスカラヌ倀、空の配列を瀺すため、
たたは空のオブゞェクト、および [ ] 配列たたはオブゞェクトの終わりを瀺すため。 未来
jqのバヌゞョンはで実行されたす - ストリヌム & -seq 次のような远加のフォヌムを出力する堎合がありたす ["゚ラヌ
メッセヌゞ"] 入力テキストの解析に倱敗したずき。

truncate_streamstream_expression
入力ずしお数倀を消費し、からの察応する数のパス芁玠を切り捚おたす。
指定されたストリヌミング匏の出力の巊偎。

jq ÂŽ[1|truncate_stream([[0],1],[[1,0],2],[[1,0]],[[1]])]ÂŽ
1
=> [[[0]、2]、[[0]]]

fromstreamstream_expression
ストリヌム匏の出力に察応する倀を出力したす。

jq ÂŽfromstream(1|truncate_stream([[0],1],[[1,0],2],[[1,0]],[[1]]))ÂŽ
ヌル
=> [2]

ストリヌムぞ
  ストリヌムぞ ビルトむンは、その入力のストリヌミング圢匏を出力したす。

jqŽ。 as $ dot | fromstream$ dot | tostream|。== $ dotÂŽ
[0、[1、{"a"1}、{"b"2}]]
=> true

割り圓お


jqでの割り圓おの動䜜は、ほずんどのプログラミング蚀語ずは少し異なりたす。 jqはしたせん
䜕かぞの参照ずコピヌを区別したす-XNUMX぀のオブゞェクトたたは配列は
「同じオブゞェクト」たたは「等しくない」ずいう抂念をさらに持たずに、等しいか等しくないかのいずれか
同じオブゞェクト」。

オブゞェクトに配列であるXNUMX぀のフィヌルドがある堎合、 .foo & 。バヌ、そしおあなたは䜕かを远加したす
.fooをタップし、その埌、 。バヌ 倧きくなるこずはありたせん。 蚭定したばかりでも 。バヌ = .foo。 䜿甚しおいる堎合
Python、Java、Ruby、Javascriptなどの蚀語でプログラミングするなら、あなたは考えるこずができたす
jqが割り圓おを行う前に、すべおのオブゞェクトの完党なディヌプコピヌを行うかのように
パフォヌマンスに関しおは、実際にはそれを行いたせんが、それが䞀般的な考え方です。

jqのすべおの代入挔算子には、巊偎にパス匏がありたす。

=
フィルタヌ .foo = 1 入力ずしおオブゞェクトを受け取り、出力ずしおオブゞェクトを生成したす。
「foo」フィヌルドが1に蚭定されおいたす。jqに䜕かを「倉曎」たたは「倉曎」するずいう抂念はありたせん-
すべおのjq倀は䞍倉です。 䟋えば、

.foo = .bar | .foo.baz = 1

.bar.bazを1に蚭定するずいう副䜜甚はありたせん。
Javascript、Python、Rubyたたは他の蚀語のプログラムはそうするでしょう。 これらの蚀語ずは異なりただし
Haskellや他の関数型蚀語のように、XNUMX぀の配列や
「同じ配列」たたは「同じオブゞェクト」であるオブゞェクト。 それらは等しい堎合も等しくない堎合もありたすが、
いずれかの状況でそれらのXNUMX぀を倉曎した堎合、もうXNUMX぀は私たちの背埌で倉曎されたせん。

これは、jqで埪環倀を䜜成するこずが䞍可胜であるこずを意味したす配列など
最初の芁玠はそれ自䜓です。 これは非垞に意図的なものであり、jq
プログラムが生成できるJSONで衚すこずができたす。

ÂŽ=Žの巊偎は、の倀を参照しおいるこずに泚意しおください。 .。 かくしお $ var.foo = 1 動䜜したせん
予想通り $ var.foo の有効たたは有甚なパス匏ではありたせん .; 䜿甚する $ var | .foo = 1
を代わりにお䜿いください。

ÂŽ=Žの右偎が耇数の倀を生成する堎合、そのような倀ごずにjqは
巊偎のパスを倀に蚭定するず、倉曎されたパスが出力されたす ..
たずえば、 .a、.b=範囲(2) outputs {"a"0、 "b"0}をタップし、その埌、 {"a"1、 "b"1}。 曎新"
譲枡フォヌム䞋蚘参照はこれを行いたせん。

それも泚意しおください .a、.b = 0 蚭定されたせん .a & .b、 だけど .a、.b= 0 䞡方を蚭定したす。

|=
代入挔算子 ÂŽ=Žず同様に、jqは「曎新」挔算子 ÂŽ| =Žを提䟛したす。
右偎のフィルタヌを取り、のプロパティの新しい倀を蚈算したす .
この匏を介しお叀い倀を実行するこずによっお割り圓おられたす。 たずえば、.foo | =
。+ 1は、「foo」フィヌルドが入力の「foo」プラス1に蚭定されたオブゞェクトを䜜成したす。

この䟋は、 ÂŽ=Žず ÂŽ| =Žの違いを瀺しおいるはずです。

プログラムに入力 ÂŽ{"a"{"b"10}、 "b"20}Žを提䟛したす。

.a = .b .a | = .b

前者は、入力の「a」フィヌルドを入力の「b」フィヌルドに蚭定し、次のように生成したす。
出力{"a"20}。 埌者は、入力の「a」フィヌルドを「a」フィヌルドに蚭定したす。
"b"フィヌルド、{"a"10}を生成したす。

巊偎は、任意の䞀般的なパス匏にするこずができたす。 芋る 道.

ÂŽ| =Žの巊偎は、の倀を参照しおいるこずに泚意しおください。 .。 かくしお $ var.foo |= . + 1 したせん
期埅どおりに動䜜したす$ var.foo の有効たたは有甚なパス匏ではありたせん .; 䜿甚する $ var | .foo
|= . + 1 を代わりにお䜿いください。

右偎が耇数の倀を出力する堎合、最埌の倀のみが䜿甚されたす。

jqŽ.. | selecttype == "boolean"| = if。 次に1、その他0終了 ÂŽ
[true、false、[5、true、[true、[false]]、false]]
=> [1,0,[5,1,[1,[0]],0]]

+ =、 -=、 * =、 / =、 =、 // =
jqには次の圢匏の挔算子がいく぀かありたす a op = b、これらはすべお同等です a |= . op b。 そう、
+= 1 倀をむンクリメントするために䜿甚できたす。

jqÂŽ.foo + = 1ÂŽ
{"foo"42}
=> {"foo"43}

耇雑な 割り圓お
jq割り圓おの巊偎では、ほずんどの堎合よりも倚くのこずが蚱可されおいたす
蚀語。 巊偎で簡単なフィヌルドアクセスをすでに芋たしたが、
配列アクセスも同様に機胜するこずに驚いおください。

.posts [0] .title = "JQマニュアル"

驚かれるかもしれたせんが、巊偎の匏は耇数を生成する可胜性がありたす
入力ドキュメントのさたざたなポむントを参照した結果

.posts []。comments | =。 + ["これは玠晎らしい"]

この䟋では、文字列「thisisgreat」を各投皿の「comments」配列に远加したす。
入力入力は、投皿の配列である「posts」フィヌルドを持぀オブゞェクトです。

jqが「a = b」のような割り圓おに遭遇するず、jqはaを遞択するためにたどった「パス」を蚘録したす。
実行䞭の入力ドキュメントの䞀郚。 次に、このパスを䜿甚しお、
割り圓おの実行䞭に倉曎する入力。 任意のフィルタヌを䜿甚できたす
等号の巊偎-入力から遞択したパスは、
割り圓おが実行されたす。

これは非垞に匷力な操䜜です。 を䜿甚しお、ブログ投皿にコメントを远加したいずしたす。
䞊蚘ず同じ「ブログ」入力。 今回は、
「ステドラン」。 前述の「遞択」機胜を䜿甚しお、これらの投皿を芋぀けるこずができたす。

.posts [] | select.author == "stedolan"

この操䜜によっお提䟛されるパスは、「stedolan」が曞き蟌んだ各投皿を指し、
以前ず同じ方法で、それぞれにコメントするこずができたす。

.posts [] | select.author == "stedolan"| .comments| =
。 + ["ひどい。"]

モゞュヌル


jqにはラむブラリ/モゞュヌルシステムがありたす。 モゞュヌルは、名前がで終わるファむルです .jq.

プログラムによっおむンポヌトされたモゞュヌルは、デフォルトの怜玢パスで怜玢されたす以䞋を参照。 The
import & include ディレクティブを䜿甚するず、むンポヌタヌはこのパスを倉曎できたす。

怜玢パス内のパスは、さたざたな眮換の察象になりたす。

「〜/」で始たるパスの堎合、ナヌザヌのホヌムディレクトリが「〜」に眮き換えられたす。

「$ ORIGIN /」で始たるパスの堎合、jq実行可胜ファむルのパスが代わりに䜿甚されたす
「$ ORIGIN」。

「./」で始たるパスたたは「。」であるパスの堎合、むンクルヌドファむルのパスは次のようになりたす。
「。」の代わりに䜿甚したす。 コマンドラむンで指定されたトップレベルプログラムの堎合、珟圚
ディレクトリが䜿甚されたす。

むンポヌトディレクティブは、オプションで、デフォルトが远加される怜玢パスを指定できたす。

デフォルトの怜玢パスは、に指定された怜玢パスです。 -L コマンドラむンオプション、それ以倖の堎合
["〜/ .jq", "$ ORIGIN /../ lib / jq"、 "$ ORIGIN /。。/ lib"].

ヌルおよび空の文字列パス芁玠は、怜玢パス凊理を終了したす。

盞察パス「foo / bar」の䟝存関係は、「foo /bar.jq」で怜玢され、
指定された怜玢パスの「foo / bar /bar.jq」。 これは、モゞュヌルを配眮できるようにするこずを目的ずしおいたす
たずえば、バヌゞョン管理ファむル、READMEファむルなどず䞀緒にディレクトリにありたす。
たた、単䞀ファむルモゞュヌルを蚱可したす。

同じ名前の連続するコンポヌネントは、あいたいさを回避するこずはできたせん䟋
「foo / foo」。

たずえば、 -L $ HOME / .jq モゞュヌル foo で芋぀けるこずができたす $ HOME / .jq / foo.jq &
$ HOME / .jq / foo / foo.jq.

「$ HOME / .jq」がファむルの堎合、メむンプログラムに゜ヌスされたす。

import 盞察パス文字列 as NAME [ ];
怜玢パス内のディレクトリを基準にしお、指定されたパスで芋぀かったモゞュヌルをむンポヌトしたす。 「.jq」
盞察パス文字列に接尟蟞が远加されたす。 モゞュヌルのシンボルの前には接頭蟞が付いおいたす
"名前"。

オプションのメタデヌタは定数jq匏である必芁がありたす。 キヌを持぀オブゞェクトである必芁がありたす
「ホヌムペヌゞ」など。 珟時点では、jqはの「怜玢」キヌ/倀のみを䜿甚したす
メタデヌタ。 メタデヌタは、ナヌザヌが モゞュヌルメタ 内蔵。

メタデヌタの「怜玢」キヌが存圚する堎合は、文字列たたは配列の倀array
文字列の; これは、最䞊䜍の怜玢パスの前に付ける怜玢パスです。

include 盞察パス文字列 [ ];
怜玢パス内のディレクトリに関連する特定のパスで芋぀かったモゞュヌルを、あたかもそれであるかのようにむンポヌトしたす
所定の堎所に含たれおいたした。 「.jq」サフィックスが盞察パス文字列に远加されたす。 The
モゞュヌルのシンボルは、モゞュヌルのコンテンツが持っおいるかのように、呌び出し元の名前空間にむンポヌトされたす
盎接含たれおいたす。

オプションのメタデヌタは定数jq匏である必芁がありたす。 キヌを持぀オブゞェクトである必芁がありたす
「ホヌムペヌゞ」など。 珟時点では、jqはの「怜玢」キヌ/倀のみを䜿甚したす
メタデヌタ。 メタデヌタは、ナヌザヌが モゞュヌルメタ 内蔵。

import 盞察パス文字列 as $ NAME [ ];
怜玢パス内のディレクトリを基準にしお、指定されたパスで芋぀かったJSONファむルをむンポヌトしたす。 A
「.json」サフィックスが盞察パス文字列に远加されたす。 ファむルのデヌタは次のようになりたす
ずしお利甚可胜 $ NAME :: NAME.

オプションのメタデヌタは定数jq匏である必芁がありたす。 キヌを持぀オブゞェクトである必芁がありたす
「ホヌムペヌゞ」など。 珟時点では、jqはの「怜玢」キヌ/倀のみを䜿甚したす
メタデヌタ。 メタデヌタは、ナヌザヌが モゞュヌルメタ 内蔵。

メタデヌタの「怜玢」キヌが存圚する堎合は、文字列たたは配列の倀array
文字列の; これは、最䞊䜍の怜玢パスの前に付ける怜玢パスです。

モゞュヌル ;
このディレクティブは完党にオプションです。 適切な操䜜には必芁ありたせん。 それは圹立ちたす
で読み取るこずができるメタデヌタを提䟛する目的のみ モゞュヌルメタ 内蔵。

メタデヌタは定数jq匏である必芁がありたす。 次のようなキヌを持぀オブゞェクトである必芁がありたす
「ホヌムペヌゞ」。 珟時点では、jqはこのメタデヌタを䜿甚しおいたせんが、ナヌザヌが利甚できるようになっおいたす
ビア モゞュヌルメタ 内蔵。

モゞュヌルメタ
モゞュヌル名を入力ずしお受け取り、モゞュヌルのメタデヌタをオブゞェクトずしお出力したす。
モゞュヌルは、「deps」キヌの配列倀ずしおメタデヌタを含むむンポヌトしたす。

プログラムはこれを䜿甚しお、モゞュヌルのメタデヌタをク゚リできたす。
たずえば、䞍足しおいる䟝存関係を怜玢、ダりンロヌド、およびむンストヌルしたす。

onworks.netサヌビスを䜿甚しおjqをオンラむンで䜿甚する


無料のサヌバヌずワヌクステヌション

Windows ず Linux のアプリをダりンロヌド

Linuxコマンド

Ad