使用jq批量更新本地Mac中的emoji.json文件
嘿,我来帮你搞定用jq批量更新本地emoji.json的事儿!jq处理JSON文件堪称神器,针对你给出的emoji条目结构,我整理了几个最常用的批量更新场景,直接上手就能用:
先做个重要提醒
操作前一定要备份原文件,避免误操作搞丢数据:
cp emoji.json emoji.json.bak
1. 批量给所有emoji条目添加新字段
比如要给每个条目都加一个"source": "custom"字段:
# 输出到新文件,保留原文件 jq '.[] += {"source": "custom"}' emoji.json > updated_emoji.json # 或者直接原地修改原文件(jq 1.5+支持-i选项) jq -i '.[] += {"source": "custom"}' emoji.json
2. 批量修改已有字段的值
比如把所有分类(c字段)为"Symbols"的条目,将added_in字段改成"2.0":
jq -i '.[] | if .c == "Symbols" then .added_in = "2.0" else . end' emoji.json
如果要修改所有条目的某个字段(比如把所有has_img_twitter改成true),更简单:
jq -i '.[] |= (.has_img_twitter = true)' emoji.json
3. 批量删除指定字段
比如删掉所有条目中的docomo、au这些运营商相关字段:
# 删除单个字段 jq -i 'del(.[].docomo)' emoji.json # 同时删除多个字段 jq -i 'del(.[].docomo, .[].au, .[].softbank)' emoji.json
也可以按条件删除,比如只删除has_img_emojione为false的条目的google字段:
jq -i '.[] | if .has_img_emojione == false then del(.google) else . end' emoji.json
4. 针对特定条件的复杂更新
比如给所有short_names包含"copyright"的条目,添加一个tags数组字段:
jq -i '.[] | if .short_names | index("copyright") then .tags = ["legal", "intellectual-property"] else . end' emoji.json
再比如,把所有unified字段格式从"00A9-FE0F"改成小写的"00a9-fe0f":
jq -i '.[] |= (.unified |= ascii_downcase)' emoji.json
内容的提问来源于stack exchange,提问作者Milad Dehghan
相关产品推荐
相关产品推荐

