해당 대괄호 사이의 내용을 반환합니다.

해당 대괄호 사이의 내용을 반환합니다.

{}[]()모든 유형의 괄호 (적절하게 중첩, 열림, 닫힘)가 포함된 파일이 있습니다 . 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"
  ]
}

구문은 동일하지만 레이아웃이 약간 다릅니다.

관련 정보