jq --arg NAME "John" '.[] | select(.group | contains ($NAME))
这应该只返回名称John,但它显示了包含John的所有值。例如:显示约翰尼约翰尼它也把这些值作为输出。我试过包含 *,也试过使用单引号和双引号。如果我使用 *,它会给出空输出。有人能帮我吗?
hl0ma9xz1#
来自contains上的手册如果B完全包含在输入中,则过滤器contains(b)将产生true。如果字符串B是字符串A的子串,则字符串B包含在字符串A中。因此,contains也匹配子字符串。使用==进行精确匹配,即仅与整个字符串进行比较:
contains
contains(b)
true
==
jq --arg NAME "John" '.[] | select(.group == $NAME)'
1条答案
按热度按时间hl0ma9xz1#
来自
contains
上的手册如果B完全包含在输入中,则过滤器
contains(b)
将产生true
。如果字符串B是字符串A的子串,则字符串B包含在字符串A中。因此,
contains
也匹配子字符串。使用==
进行精确匹配,即仅与整个字符串进行比较: