【发布时间】:2021-10-16 12:54:18
【问题描述】:
Vivaldi 浏览器(基于 Chromium)的书签文件往往会累积大量 base64 编码的缩略图,占用大量空间,我想删除这些条目。该文件是一个 JSON 文件,条目如下所示:
{
"date_added": "13215828073144281",
"guid": "3ace3174-ea60-42c5-88cf-e535a150ae38",
"id": "74",
"meta_info": {
"Thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgA....AUpSgFKUoBSlKA//2Q=="
},
"name": "RIPE WHOIS IP Address Database Search › Look up an IP addres… - iTools",
"type": "url",
"url": "http://itools.com/tool/ripe-whois-ip-address"
},
我已经有一个像这样的 jq 过滤器:
jq 'walk(if type == "object" then with_entries(select(.key | test("Thumbnail") | not)) else . end)' Bookmarks > Bookmarks2
问题是这也会删除包含自定义缩略图的条目,如下所示:
"Thumbnail": "chrome://vivaldi-data/local-image/aa0d8713-99c6-4fcb-a725-a29235c4e8b0",
所以问题是,我将如何仅删除包含或以字符串data:image 开头的缩略图条目?
【问题讨论】:
-
我对 JQ(或 JSON 相关)不是很有经验,所以如果我没有使用上述正确的术语,我深表歉意。我也找不到与此特定案例完全匹配的另一个答案。
-
我也不太了解
jq,但解决方法是使用jq只是为了漂亮地打印json,然后使用sed删除包含"Thumbnail": "data:image的行?那可能仍然是有效的 json? -
@SamBob 是的,
sed会很好,但由于某种原因,它似乎会破坏 JSON,并清除所有内容,直到它从同步服务器获得新副本。虽然使用jq工具有效,但不知道为什么。