jq는 json 값에서 json을 구문 분석합니다.

jq는 json 값에서 json을 구문 분석합니다.

나는 다음과 같은 것을 가지고 있습니다

echo "{\"t\":\"set foo='{\\\"mode\\\":1}'\"}"|jq .
{
  "t": "set foo='{\"mode\":1}'"
}

출력이 다음과 같이 보이길 원합니다.

{
  "t": "set foo='{\"mode\":1}'",
  "mode": 1
}

이제 이를 달성하기 위해 몇 가지 단계를 거치고 이를 하나의 jq 호출로 결합할 수 있는지 확인하고 싶습니다.

답변1

이 정확한 입력을 위해,

jq '. + (.t[9:-1] | fromjson)'

당신이 원하는 것을 할 것입니다. 문자를 추출합니다{"mode":1} 문자열에서 (9부터 시작, 마지막은 생략됨)이렇게 하면 양쪽의 작은따옴표가 제거되고JSON으로 구문 분석객체로 변환 fromjson하고 마지막으로 해당 객체( {"mode": 1})를 원래 입력(.)사용+.

실제 데이터와 일치하도록 인덱스를 조정해야 합니다. 개구부가 어디에 있는지 찾아야 한다면 그것이 대체 역할을 할 것입니다 '. 더 철저하게 분석해야 한다면 새로운 질문을 하십시오.(.t|index("\u0027")+1)9

관련 정보