【发布时间】:2017-08-20 20:00:18
【问题描述】:
我正在尝试从格式如下的文本文件中提取字段值:
{fieldvalue1} {fieldvalue2} {fieldvalue3}
但是,字段值本身可以包含用大括号分隔的子字段,例如:
{abc} {xyz} {efg {123} {pqx}}
所以在上述情况下,所需的输出是:
* fieldvalue1 = abc
* fieldvalue2 = xyz
* fieldvalue3 = efg {123} {pqx}
我尝试了以下过滤器:
sed 's/^{//g;s/}$//g' | awk -F"} {"
但是,这显然无法正确解析上面的 fieldvalue3。
【问题讨论】:
-
这是 JSON 吗?答案是:不要
-
为什么人们不赞成这个非常明确的问题?我意识到其中有歧义,但我们不需要只是对澄清的努力不屑一顾,不是吗?不,它不是 JSON。
-
它不是 JSON。它是需要解析的专有外壳的输出。字段名称本身可以包含大括号,并由大括号分隔。
-
你需要一个理解深度(嵌套结构)并支持递归的解析器;在
awk中实现这一点会很痛苦。