如何将bash脚本中的json解析为数组?数组值应该同时具有 key:value 格式

gmpy1990

我的 json.file 看起来像

{
  "price1" : "120.10",
  "price2" : "110.30",
  "price3" : "244.45"
}

我在 bash 脚本中使用了以下 sed 命令来声明从 json 读取的数组

array=( $(sed -n '/{/,/}/{s/[^:]*:[^"]*"\([^"]*\).*/\1/p;}' json.file) )

这给了我echo ${array[*]}值的输出

120.10 110.10 244.45

我正在寻找我的数组值以包含键名 ( key:value)。我想要的输出应该是key:value格式

price1:120.10 price2:110.10 price3:244.45

有人可以帮助或指导我吗?

雷诺·帕卡莱

解析jsonwithsed可能是一个坏主意。但让我们假设它是一种超级简单和常规的json格式。您离工作解决方案不远了:

$ array=($(sed -nr 's/.*"(.*)".*"(.*)".*/\1:\2/p' json.file))
$ echo ${array[*]}
price1:120.10 price2:110.30 price3:244.45

p替换命令标志告诉 sed 在匹配时打印结果。很高兴知道。如果您感兴趣的每行只有两个带引号的字符串,它应该可以工作。

如果您想更具体地了解匹配行,则可以。例如:

sed -nr 's/^  "(.*)" : "(.*)",?$/\1:\2/p' json.file

还指定有 2 个前导空格,该列前后各有一个空格,并且在最后一个引号之后和行尾之前有一个可选的逗号。

但也有更简单的:

sed -nr 's/[[:space:]",]//gp' json.file

这只是删除所有空格、双引号和逗号,只打印匹配的行。你猜怎么着?这是你(显然)想要的。

无论如何,请记住,如果您的json文件比您显示的更复杂,那sed绝对不是正确的工具。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

反转Golang中<value,key>格式的地图

如何比较JSON格式数组VALUE和KEY来创建新数组?在Angular 5中

将具有key = value对的文本文件转换为jq中的特定json格式

使用可变字段文件格式解析符号分隔文件,格式为key = value的可变字段

在python中以key = value1,.... valuen格式编写文件

如何将JSON转换为字符串(\“ key \”:value)格式

如何将字典的格式更改为value1; key1; 在Python 3.6中?

PHP 扁平化树数组,映射为新数组格式 s key => value

如何将来自API查询的响应(以JSON {“ key”:value}格式)解析为变量列表,以便可以将其输入到SQL表中?

在 JSON (key , value) 对中格式化具有逗号的 JSON?

如何将具有XML格式的数据的列拆分为新数据库的不同行,作为TALEND中的KEY VALUE

如何在jq中将JSON对象转换为key = value格式?

正则表达式匹配 key=(value, value) 格式

在python中将.csv格式化为json,以获取单个key:value对

有人知道XML序列化Key = Value的这种格式吗?

如何将图像数组从json格式解析为tabelview

解析网址格式中的activation_key

--key = value格式的Java命令行参数

如何将 Map<Key, Value> 转换为与 Jackson 的 {"keyprop" : key, "valueprop" : value} 数组?

将.pem私钥转换为.key格式

谷歌翻译 API Key json 格式

如何将文件中给定的输入值转换为具有指定格式的数组

如何将bash数组格式化为JSON数组

解析数组以更改$ key并添加新的$ value => $ key

Bash脚本使用XMLStarlet将xml元素解析为key = value对

key =“ value”&key =“ value” Java中的字符串解析

无法从Json数组获取key:value

数组中的单独$ value用于创建$ key => $ value数组

PHP:将字符串[“ key”,“ value”]解析为关联数组