【发布时间】:2020-06-16 03:05:09
【问题描述】:
我正在做一个关于通过 shell 脚本解析 JSON 的任务。执行 JSON 时有什么方法可以从 JSON 中获取值?例如,我想输出 id、body 和 age 的值。我正在尝试使用 cut、sed、grep,但不是 jq。我应该使用for循环吗? 目前,我只能将 json 重定向到 txt 文件。
{
"postId": 1,
"id": 1,
"name": "id labore ex et quam laborum",
"email": "Eliseo@gardner.biz",
"body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora",
"age": 28
}
【问题讨论】:
-
jq是适合这项工作的工具。你为什么不用它? -
作业要求不用jq,只用sed、grep等
-
到目前为止,您应该尽最大努力。这将指导那些可能提供帮助的人。 JSON 输入是否由问题中所示的单个对象组成,还是可能有多个对象?当您说“输出 ID、身体和年龄”时,该输出应该采用什么形式?
-
sed和grep都是基于正则表达式的,因此不能解析像 JSON 这样可以包含嵌套语法的东西(例如,JSON 允许数组内的数组内的数组内... .)。它与HTML 属于同一类别。如果 JSON 足够简单,您可以伪造它,但如果 JSON 不是您期望的确切格式,则使用正则表达式解析 JSON 将失败。 -
@Gordon,如果我理解正确,
sed和grep不能像删除括号、逗号和键一样。然后只留下那些值?