我正在尝试使用 sed 从 json 文件中删除一些行。正如您可能知道的那样,我非常业余,但认为我的正则表达式是正确的。然而 sed 会抛出各种错误,包括未终止的地址和未终止的 's' 命令。
我试图删除的文本是:
{
"trait_type": "Accessories",
"value": "None"
}
我必须删除这个正则表达式(trait_type 在不同的文件中是不同的,所以我需要根据值为“none”删除整个块)
(\{)([\r\n].+)(\r|\n|)(.*(?:None).*)([\r\n].*)
使用在线正则表达式测试器,上述内容似乎工作得很好。
我使用的命令(及其一些变体)是:
sed -e 's/\{([\r\n].+)(\r|\n|)(.*(?:None).*)([\r\n].*)//g' 2.json
有人能帮忙吗?
非常感谢
答案1
假设这是 JSON 文件的一部分,以下命令将查找具有键 和键jq
的所有对象,并删除键具有值 的所有对象。trait_type
value
value
None
jq 'del( .. |
select(
type == "object" and
has("trait_type") and has("value") and
.value == "None"
) )' file
上面的命令会将操作结果写入标准输出。将输出重定向到新文件以保存它。