返回

linux——如何使用jq检查JSON数组中是否存在元素,并将相应的对象放入新文件中

发布时间:2022-04-19 12:46:45 323
# 运维

我在大约50个URL上运行curl命令,每个URL都有类似的JSON(但每个curl命令的'country'值不同,但'names'的值可能重复或唯一:

e、 g.一个curl命令可以生成如下所示的JSON:

{"names":["Mary","Tom","Sue","Rob"],"country":"USA"}

而下一个curl命令将给出:

{"names":["Sue"],"country":"Russia"}

下一个curl命令将给出:

{"names":["Tom","Jenny"],"country":"Nigeria"}

我有一个单独的姓名列表(例如Tom、Sarah、Jenny、Trinh、Nancy),我想知道他们是否与我运行curl命令的JSON中的某个国家有关。如果它们存在于;“姓名”;,我想把这个人的名字和国家放进一个新的文本文件(或者JSON文件,没关系——我只想让它格式正确),所以最后我有一个输出文件,将这个人的名字和他们所属的国家关联起来。如果一个国家有多个人,输出文件中不应该有重复的国家值;人民的名字应该列在那一个国家下面。

我尝试了多种方法来解决这个问题,但我没能弄明白,因为这是我第一次尝试写脚本。

我试过的最后一个命令:

curl "https://..." | jq -r 'select(.names[] as $a | ["Tom","Sarah","Jenny","Trinh","Nancy"] | index($a) | while read output; do tee -a listOfCountries; done; done

^这会产生副本,我不知道如何设置输出格式,以便在每个输出和国家之间留出空间只有其下人员的具体姓名

输出文件(上面给出的示例)应该类似于:

USA: Tom

Nigeria: Tom, Jenny

如果您有任何建议,请告诉我,我们将不胜感激。非常感谢。

附带问题:如果要搜索的名字列表非常长(100多个名字),那么编写脚本的最佳方式是什么?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像