用sed提取json值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用sed提取json值相关的知识,希望对你有一定的参考价值。
我有一个json结果,我想提取一个没有双引号的字符串
{"value1":5.0,"value2":2.5,"value3":"2019-10-24T15:26:00.000Z","modifier":[]}
使用此正则表达式,我可以正确提取value3(019-10-24T15:26:00.000Z)
sed -e 's/^.*"endTime":"([^"]*)".*$/1/'
如何提取“value2”结果,一个没有双引号的字符串?
我需要用sed做,所以无法安装jq。那是我的问题
只需运行jq
命令行JSON处理器
$ json_data='{"value1":5.0,"value2":2.5,"value3":"2019-10-24T15:26:00.000Z","modifier":[]}'
$ jq '.value2' <(echo "$json_data")
2.5
使用密钥.value2
来访问您感兴趣的值。
这个链接总结了为什么你不应该使用正则表达式来解析json(对于XML / html和理论上可以无限嵌套的其他数据结构也是如此)
Regex for parsing single key: values out of JSON in Javascript
如果您没有jq
可用:
您可以使用以下GNU grep
命令:
$ echo '{"value1":5.0,"value2":2.5,"value3":"2019-10-24T15:26:00.000Z","modifier":[]}' | grep -zoP '"value2":s*K[^s,]*(?=s*,)'
2.5
使用这里详述的正则表达式:
"value2":s*K[^s,]*(?=s*,)
但是:ぁzxswい
如果json没有线性化,这甚至可以工作!
使用https://regex101.com/r/82J6Cb/1/它也非常直接,你应该默认安装在你的机器上,即使它不是python3它应该工作
python
使用GNU sed for $ cat data.json
{"value1":5.0,"value2":2.5,"value3":"2019-10-24T15:26:00.000Z","modifier":[]}
$ cat extract_value2.py
import json
with open('data.json') as f:
data = json.load(f)
print(data["value2"])
$ python extract_value2.py
2.5
启用ERE:
-E
任何POSIX sed:
$ sed -E 's/.*"value3":"?([^,"]*)"?.*/1/' file
2019-10-24T15:26:00.000Z
$ sed -E 's/.*"value2":"?([^,"]*)"?.*/1/' file
2.5
以上假设您从未在引用的字符串中使用逗号。
如果你的数据在'd'文件中,请尝试gnu sed
$ sed 's/.*"value3":"{0,1}([^,"]*"{0,1}.*/1/' file
2019-10-24T15:26:00.000Z
$ sed 's/.*"value2":"{0,1}([^,"]*"{0,1}.*/1/' file
2.5
以上是关于用sed提取json值的主要内容,如果未能解决你的问题,请参考以下文章