JQ中性管と並置の違いは何ですか?

JQ中性管と並置の違いは何ですか?

私のプログラムは、タスクリストを含むフィールドを持つオブジェクトであることを返しJSONます。各ジョブには、次のフィールドが含まれています。stdoutoperationsid

{
    "operations": [
        {
            "id": "694ef895-793f4631-41103e8-8ab59e66",

私はそれからIDのリストを取得しようとしていますjq

文を書いているなら

jq '.operations | .[] | .id'

私が文章を書くと効果がある

jq '.operations | .[].id'

それも動作します。

つまり、並置はここと同じです|

しかし、私が書くなら

jq '.operations.[].id'

メッセージで失敗します

jq:エラー:構文エラー、予期しない「[」、FORMATまたはQQSTRING_STARTが必要です(Unixシェルの引用の問題?)、行1:.Operations。[].id jq:1コンパイルエラー

理由と回避策は何ですか?

答え1

.foo.bar合計のみを比較する|限り、マニュアルページの「基本フィルタ」に記載されているように違いはありません。

形式のフィルタは.foo.barと同じです.foo|.bar

はい、あなたの.operations[].id場合はそれが必要です。

関連情報