如何使用Linux命令删除JSON文件中的delivery_ts字段及对应值
实现方案
方案1:使用jq命令(推荐)
jq是Linux下专门处理JSON格式数据的工具,不会因为JSON字段顺序、值包含特殊字符等问题出现处理错误,是该场景的最优选择。
- 基础用法(输出到新文件):
jq 'if has("delivery_ts") then del(.delivery_ts) else . end' 你的原文件名 > 输出文件名
- 原地修改原文件(仅支持jq 1.6及以上版本):
jq -i 'if has("delivery_ts") then del(.delivery_ts) else . end' 你的原文件名
- 低版本jq原地修改兼容写法:
jq 'if has("delivery_ts") then del(.delivery_ts) else . end' 你的原文件名 > tmp.json && mv tmp.json 你的原文件名
方案2:使用sed命令(无jq环境应急使用)
如果你的设备没有安装jq,且待处理文件中delivery_ts字段固定在JSON末尾、值为纯数字,可以用sed做正则替换实现需求:
- 基础用法(输出到新文件):
sed '/"delivery_ts":/s/,"delivery_ts":[0-9]*//' 你的原文件名 > 输出文件名
- 原地修改原文件:
sed -i '/"delivery_ts":/s/,"delivery_ts":[0-9]*//' 你的原文件名
注意:sed属于文本正则处理工具,如果JSON字段顺序发生变化、
delivery_ts值包含非数字内容,可能会导致JSON格式损坏,非必要不推荐使用。
内容的提问来源于stack exchange,提问作者Starbucks Admin
相关产品推荐
相关产品推荐

