2016-06-30 3 views
0

나오지하여 JSON 파일에서 값의 쌍을 가져 오기 : 예 :내가 JSON 파일에서 값을 얻으려면

{"name":"ghprbActualCommitAuthorEmail","value":"[email protected]"},{"name":"ghprbPullId","value":"226"},{"name":"ghprbTargetBranch","value":"master"}, 

내 예상이다 내가 [email protected], 226master을 싶어.

+3

json 파서가 첫 번째 선택 항목이됩니다 ... – Kent

+0

답을 명확하게 작성 하시겠습니까? 쉽게 이해할 수있다. nd? – lppnghia

+0

왜 sed로 이것을하고 싶습니까? 정말 적절한 JSON 파서를 사용해야합니다. –

답변

3

sed은 JSON 처리를위한 잘못된 도구입니다. 당신을 가정

jq '.[].value' tmp.son을 사용할 수 있습니다

[{"name":"ghprbActualCommitAuthorEmail","value":"[email protected]"}, 
{"name":"ghprbPullId","value":"226"}, 
{"name":"ghprbTargetBranch","value":"master"}] 

같은 유효 JSON을 가진 파일 tmp.json 있습니다.

파일 대신 포함되어있는 경우

{"name":"ghprbActualCommitAuthorEmail","value":"[email protected]"} 
{"name":"ghprbPullId","value":"226"} 
{"name":"ghprbTargetBranch","value":"master"} 

(jq 연속으로 각 개체에 필터를 적용하므로 즉, 3 별도의 JSON 오브젝트의 단지 스트림, 당신은, jq '.value' tmp.json을 사용할 수 있습니다. 당신은 또한 jq -s '.[].value' tmp.son을 사용할 수 있습니다 -s 플래그를 사용하면 jq은 먼저 전체 입력을 배열로 읽을 수 있습니다. 두 경우 모두 동일한 필터를 사용할 수 있습니다.

+0

내 컴퓨터에 jq를 설치해야한다는 의미입니다. Redhat 6을 사용하고 있습니다. – lppnghia

+2

수정하십시오. 그러나 셸에서 JSON을 사용하려고한다면 정말로해야합니다. – chepner

+0

내 Redhat에 jq를 설치하는 방법을 찾는 동안이 경우 sed 또는 grep에 대한 제안 사항이 있습니까? 만약 내가 하나의 항목을 [email protected] 싶어요. 우리는 sed 또는 grep을 사용하여이를 수행 할 수 있습니까? – lppnghia

관련 문제