代码之家  ›  专栏  ›  技术社区  ›  Christian Lindig

一个` select(.==“a”,“b”][])`谓词在JQ中是如何工作的?

  •  2
  • Christian Lindig  · 技术社区  · 8 年前

    $ echo '["a","b","c","d"]' | jq '.[] | select (. == ["a","b"][] )'
    "a"
    "b"
    

    在上述代码中,选择了 ["a","b"] 大堆然而,我不明白 . == ["a","b"][] == .

    相关:

    1 回复  |  直到 8 年前
        1
  •  2
  •   peak    8 年前

    理解这一点的关键是jq是面向流的。 ["a","b"][] 生成流,因此 . == ["a","b"][] 生成流。 select

    为了理解jq是如何工作的,它通常有助于把事情分开。在本例中,您可以先尝试:

    echo '["a","b","c","d"]' | jq '.[] | (. == ["a","b"][])'
    

    debug 也很有帮助,例如。

    echo '["a","b","c","d"]' | jq '.[] | select(debug == ["a","b"][])'