首页 > 解决方案 > 根据 shell 脚本中的字符串匹配从 JSON 数组中删除元素

问题描述

我想根据字符串匹配删除 JSON 元素(如果存在)。

我正在使用 shell 脚本。

样本输入:

["https://test-ci.cmxdev.com/dev/AD-885/?oauth=callback",  
"https://test-ci.cmxdev.com/dev/INS-1676-a/?oauth=callback",  
"https://test-jdtest.cmxdev.com?oauth=callback",  
"https://localhost:3000?oauth=callback"]

样本输出(删除第二个元素):

["https://test-ci.cmxdev.com/dev/AD-885/?oauth=callback",   
"https://test-jdtest.cmxdev.com?oauth=callback",  
"https://localhost:3000?oauth=callback"]

标签: jsonshelljq

解决方案


要从数组中删除等于特定值的所有元素,您可以从数组中“减去”值:

. - [.[1]]

否则,通常的方法是根据您想要的条件重建和过滤数组。

map(select(. != "https://test-ci.cmxdev.com/dev/INS-1676-a/?oauth=callback"))

推荐阅读