shell bash脚本+jq:contains(),应完全匹配字符串

x4shl7ld  于 2022-12-23  发布在  Shell
关注(0)|答案(1)|浏览(258)
jq --arg NAME "John" '.[] | select(.group | contains ($NAME))

这应该只返回名称John,但它显示了包含John的所有值。例如:显示约翰尼约翰尼
它也把这些值作为输出。我试过包含 *,也试过使用单引号和双引号。如果我使用 *,它会给出空输出。有人能帮我吗?

hl0ma9xz

hl0ma9xz1#

来自contains上的手册
如果B完全包含在输入中,则过滤器contains(b)将产生true。如果字符串B是字符串A的子串,则字符串B包含在字符串A中。
因此,contains也匹配子字符串。使用==进行精确匹配,即仅与整个字符串进行比较:

jq --arg NAME "John" '.[] | select(.group == $NAME)'

相关问题