shell 如何检查字符串数组是否包含`jq`中指定的字符串?[副本]

rbpvctlc  于 2023-10-23  发布在  Shell
关注(0)|答案(1)|浏览(125)

此问题已在此处有答案

How to check if element exists in array with jq(6个回答)
25天前关闭
我有一个JSON格式的字符串数组。我想检查它是否包含特定的字符串值。
我尝试使用contains

echo '["aa", "bb", "cc"]' |jq '. | contains(["aa"])'
> true

它可以工作,但它也会为部分匹配返回true:

echo '["aa", "bb", "cc"]' |jq '. | contains(["a"])'
> true

我怎样才能找到完全匹配的呢?

xxls0lw8

xxls0lw81#

你可以使用带有单词边界的正则表达式:

$ echo '["aa", "bb", "cc"]' | jq -r '.[] | test(["\\baa\\b"]) | tostring | select(. == "true")'
true

$ echo '["aa", "bb", "cc"]' | jq -r '.[] | test(["\\ba\\b"]) | tostring | select(. == "true")'

相关问题