나는 다음과 같은 것을 가지고 있습니다
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