我想根据字符串匹配删除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"]
示例输出(删除第2个元素):
["https://test-ci.cmxdev.com/dev/AD-885/?oauth=callback",
"https://test-jdtest.cmxdev.com?oauth=callback",
"https://localhost:3000?oauth=callback"]
答案 0 :(得分:0)
要从数组中删除所有等于特定值的元素,您可以"减去"数组中的值:
. - [.[1]]
否则,通常的方法是根据您想要的条件重建和过滤数组。
map(select(. != "https://test-ci.cmxdev.com/dev/INS-1676-a/?oauth=callback"))
答案 1 :(得分:0)
我能够使用以下方法进行工作。
查找有效字符串的索引
callback_url_index=$(echo $json_output | jq -r '.UserPoolClient.CallbackURLs | index("https://test-jdtest.cmxdev.com?oauth=callback")');
根据找到的索引
删除元素if [ "$callback_url_index" != null ] ; then
callbackURLs=$(echo $json_output | jq -r --arg callback_url_index "$callback_url_index" '.UserPoolClient.CallbackURLs | del(.['$callback_url_index'])')
谢谢!