【发布时间】:2013-09-25 08:33:53
【问题描述】:
我已经阅读了 SO 的许多现有问题,但没有一个能回答我正在寻找的问题。我知道使用 sed/awk 在 bash 中解析 json 很困难,但我只需要在每条记录的键值对的整个列表中的每条记录中的几个键值对。我想这样做是因为它会更快,因为主 JSON 非常大,有数百万条记录。
JSON 格式如下:
{
"documents":
[
{
"title":"a", //needed
"description":"b", //needed
"id":"c", //needed
....(some more:not useful)....
"conversation":
[
{
"message":"",
"id":"d", //not needed
.....(some more)....
"createDate":"e", //not needed
},
...(some more messages)....
],
"createDate":"f", //needed
....(many more labels).....
}
],
....(some more global attributes)....
}
现在为此我需要标记为需要的属性,但它们的公共键使得通过简单的 sed/awk 获取它是一个问题。任何人都可以建议我们是否可以使用 sed/awk 来做到这一点。如果可能的话,我们将不胜感激。
P.S.:我知道jsawk,但我不想引入任何依赖,所以如果可能,请建议使用 sed/awk。
编辑:下面给出的格式的多个 extries(如在文档中我们有一个列表)
"title":"a",
"description":"b"
"id":"c"
"createDate":"f"
编辑:JSON 没有任何空格。它的格式是为了便于阅读。
【问题讨论】:
-
为什么不使用
python?还是某种 json 解析器? -
@iamauser 起初认为,他们做的比我需要的多得多。
-
@AmanDeepGautam 了解您在这些 json 解析器中需要什么比尝试使用 awk 或 sed 更容易。当值跨越多行时,麻烦就来了。顺便问一下,您可以为输出生成一个示例格式吗?
-
@konsolebox 我已将字段标记为
needed。我需要那些键值对。 -
是的,但它们不会在输出中重新格式化吗?