【发布时间】:2020-10-29 16:54:36
【问题描述】:
我有一个如下的 json 数据。需要 grep 值并将其导出到新文件中。
{
"Data":
[
"User": [
{"Name": "Solomon", "Age":20},
{"Name": "Absolom", "Age":30},
]
"Country": [
{"Name" : "US", "Resident" : "Permanent"},
{"Name" : "UK", "Resident" : "Temporary"}
]]}
预期结果,
需要grep“User”的值并导出到一个新的文件User.json
用户.json
"User": [
{"Name": "Solomon", "Age":20},
{"Name": "Absolom", "Age":30},
]
再次需要 grep "Country" 并导出到 Country.json
Country.json
"Country": [
{"Name" : "US", "Resident" : "Permanent"},
{"Name" : "UK", "Resident" : "Temporary"}
]
正在尝试使用 sed,但得到的结果不正确
sed -e 's/.*"User"\(.*\)].*/\1/' Data.json > Users.json
由于有很多特殊字符 ]/[/{/} ,不知道如何正确地 grep 值并将其导出到新文件。
任何建议都会很有帮助
【问题讨论】:
-
使用 json 感知工具提取 json 数据。使用
jq。不,你不能用 sed 编写 json 解析器。 -
不,不想分割任何数据。我只需要 grep 并将其导出到一个新文件。我也不想使用
jq,因为我的linux发行版没有jq -
同样,这不是一个有效的 JSON 值。数组不能有
"key": "value"形式的元素。 -
是的,它不是一个有效的 JOSN,原因是我只想 grep 所需的记录并导出到一个新文件中
-
好的,但问题正文说它是一个 json,这是错误的,可能会产生误导。