首页 > 解决方案 > 在 bash 脚本中使用 sed 和 jq

问题描述

如何使用 sed 和 jq 将键名中的 _ 替换为符号 a

{“产品名称”:“kl”}

应该成为

{“产品名称”:“kl”}

在 bash 脚本中

标签: bashjq

解决方案


不需要sed;这很容易做到jq

$ jq '{ productaname: .product_name }' <<<'{ "product_name":"kl" }'
{"productaname":"kl"}

如果要在对象的所有键中用 a 替换下划线:

$ jq 'with_entries(.key |= gsub("_"; "a"))' <<<'{ "product_name":"kl", "foo_bar":12 }'
{"productaname":"kl","fooabar":12}

从文档中with_entries

to_entries, from_entries, with_entries

这些函数在对象和键值对数组之间进行转换。如果to_entries传递一个对象,则对于输入中的每个 k: v 条目,输出数组包括{"key": k, "value": v}.

from_entries进行相反的转换,并且with_entries(foo)是 的简写to_entries | map(foo) | from_entries,用于对对象的所有键和值进行某些操作。from_entries接受键、键、名称、名称、值和值作为键。


推荐阅读