返回相应括号之间的内容

返回相应括号之间的内容

我有一个包含所有类型括号的文件{}[]()- 适当地嵌套、打开和关闭。我想返回字符串 ( text:) 之后匹配方括号内的内容。该文件的内容如下所示:

.... 

{
    "text": [
        {
            "string1": ["hello", "world"],
            "string2": ["foo", "bar"]
        },
        {
            "string1": ["alpha", "beta"],
            "string2": ["cat", "dog"]
        }
    ],
    "unwanted": [
        {
            "stuff": ["nonesense"]
        }
    ]
}
.... and so on

我想回来

{
    "string1": ["hello", "world"],
    "string2": ["foo", "bar"]
},
{
    "string1": ["alpha", "beta"],
    "string2": ["cat", "dog"]
}

该文件是json类型并且具有相似的结构。我想具体返回方括号中的内容text:

答案1

您提供的不是有效的 JSON。将表达式括起来,修复其他错误,并添加一个反例:

{
    "text": [
        {
            "string1": ["hello", "world"],
            "string2": ["foo", "bar"]
        },
        {
            "string1": ["alpha", "beta"],
            "string2": ["cat", "dog"]
        }
    ],
    "unwanted": [
        {
            "stuff": ["nonesense"]
        }
    ]
}

您可以使用 JSON 解析器(例如jq.例如,这将挑选出text数组:

jq -c '.text[]'

{"string1":["hello","world"],"string2":["foo","bar"]}
{"string1":["alpha","beta"],"string2":["cat","dog"]}

或者

jq '.text[]'

{
  "string1": [
    "hello",
    "world"
  ],
  "string2": [
    "foo",
    "bar"
  ]
}
{
  "string1": [
    "alpha",
    "beta"
  ],
  "string2": [
    "cat",
    "dog"
  ]
}

它们在语法上是相同的;只是布局略有不同。

相关内容