Arrays jq解析json问题无法使其循环
获取身份证Arrays jq解析json问题无法使其循环,arrays,json,bash,jq,Arrays,Json,Bash,Jq,获取身份证 $ cat sax.json | jq '.sax[] | select(.name | contains("mex"))' | jq .id "e49887" "e6de26" "6cc093" "89e0fe" 自行车坏了。 请帮忙 在第一个查询中,不需要调用jq两次;您还可以避免UOOC:
$ cat sax.json | jq '.sax[] | select(.name | contains("mex"))' | jq .id
"e49887"
"e6de26"
"6cc093"
"89e0fe"
自行车坏了。
请帮忙
jq--argjson i“$i”…
jq-r
设置数组内容,去掉引号,然后使用--argi“$i”
包含的
的语义相当复杂;通常,要检查一个字符串是否是另一个字符串的子字符串,最好使用startswith
、index
、test
,或类似的方法(视情况而定)
jq
不能在循环中使用?
foreach?你好!除了提供代码外,用叙述介绍问题也是非常有用的。我可以建议您在快速回顾这些有用的建议后修改您的问题吗?请注意,
array=($(任何内容))
是一种反模式,不应该这样做。看见对于bash4.x或更高版本,使用readarray-tarray<这并不是一个完整的答案。您是否可以对此进行扩展,或者从问题中复制代码并对其进行修改以使其按预期工作?
$ cat sax.json | jq '.sax[] | select(.name | contains("mex"))' | jq .id
"e49887"
"e6de26"
"6cc093"
"89e0fe"
#!/bin/bash
declare -a array=($(jq .sax[].name sax.json ))
for i in "${array[@]}"
do cat sax.json | jq '.sax[] | select(.name | contains($i))' | jq .id
done
< sax.json jq '.sax[] | select(.name | contains("mex")) | .id'
jq --argjson i "$i"