首页 > 解决方案 > JQ - 用空格过滤值

问题描述

我想选择一个值并过滤它。但它有一个空间。我正在尝试使用 for 循环来做到这一点。但是在使用for loop. 我什至尝试过--arg name "$i",但这也没有用。

值为“虚拟组 1”、“虚拟组 2”

group_list=("dummy group 1", "dummy group 2");

for i in "${group_list[@]//,/}"
do

echo $groupid_json | jq  -r '.result[] | select(.name == "$i") | .groupid'

done

但什么也没有发生。这是我要过滤的实际 json 输出:

[
  {
    "groupid": "92",
    "name": "dummy group 1"
  },
  {
    "groupid": "93",
    "name": "dummy group 2"
  }
]

如果我输入该值,那么它可以工作

echo $groupid_json | jq  -r '.result[] | select(.name == "dummy group 1") | .groupid'

标签: jsonjq

解决方案


正确声明group_list它会起作用。

group_list=("dummy group 1" "dummy group 2")
for i in "${group_list[@]}"; do
  jq -r --arg name "$i" '.[] | select(.name == $name) .groupid' <<< $groupid_json
done

推荐阅读