【发布时间】:2020-05-23 15:29:21
【问题描述】:
如何使用 sed 和 jq 将键名中的 _ 替换为符号 a
{ "product_name":"kl" }
应该变成
{ "产品名称":"kl" }
在 bash 脚本中
【问题讨论】:
如何使用 sed 和 jq 将键名中的 _ 替换为符号 a
{ "product_name":"kl" }
应该变成
{ "产品名称":"kl" }
在 bash 脚本中
【问题讨论】:
不需要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接受 key、Key、name、Name、value 和 Value 作为键。
【讨论】: