如何解决jq:删除具有空字符串值的键
我有以下JSON:
{
"data": [
{
"{#NAME}": "Test 1","{#ID}": "1","{#IP}": "192.168.1.2:80"
},{
"{#NAME}": "Test 2","{#ID}": "2","{#IP}": ""
},{
"{#NAME}": "Test 3","{#ID}": "3","{#IP}": "192.168.1.3:80"
},{
"{#NAME}": "Test 4","{#ID}": "4","{#IP}": "192.168.1.4:80"
},{
"{#NAME}": "Test 5","{#ID}": "5","{#IP}": ""
}
]
}
但是我想返回:
{
"data": [
{
"{#NAME}": "Test 1","{#IP}": "192.168.1.2"
},},"{#IP}": "192.168.1.3"
},"{#IP}": "192.168.1.4"
},}
]
}
我对使用JQ非常陌生,不确定如何去做。我通读了这段issue page on GitHub,但似乎没有一个例子适合我。
我还需要删除端口号和冒号。有可能吗?
解决方法
您可以执行以下操作,以使用with_entries(expr)
选择不是 empty 的值,而 expr 是排除空字段的条件。>
也再次使用.value
字段删除与包含端口字符串的正则表达式匹配的字符串。
jq '.data |= map(with_entries(select(.value != "") | .value |= sub(":[0-9][0-9]$"; "")))'
,
删除所有以""
结尾的行:
sed -r '/""$/d' test.json
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。