2016-09-11 2 views
0

Bash parse json 파일. I는 다음과 같습니다 shich JSON 파일에서 버전 값을 얻을 필요가 :bash로 json 파일을 구문 분석하려고 시도했습니다.

{ 
"attributes": { 
}, 
    "groupings": { 
}, 
"recipes": { 
}, 
"version": "0.2.54", 
"source_url": "", 
"issues_url": "" 
} 

그러나 다른 서버에이 (공백없이)과 같이이

"attributes": {},"groupings": {},"recipes":{},"version": "0.2.54","source_url": "","issues_url": ""} 

나는 "그렙으로이 문제를 해결하려고 - Po "하지만 공백없이 jsons에서 작동하지 않으며 sed & awk로 이것을 해결하려고 시도하지만 공백이있는 jsons에서는 작동하지 않습니다.

apt-get install jq 

사용법 :이 내가 스크립트에서 이것을 사용하는 것을 시도하고 있음을 지적하고 다음 사용을 설치하는 "칼 ssh를"

+0

이 작업에는'jq'를 사용하는 것이 좋습니다. – Cyrus

+0

본적이 있지만 환경에서 각 서버에 연결하고 각 서버에 도구를 설치해야한다는 사실에 직면하게되면 더욱 복잡해집니다. Ans \ d는 centos repo를 "yum install jq"로 간단히 설치할 수 없기 때문에 centos repo를 업데이트합니다. –

+0

예를 들면 :'tr -cd '[0-9].' Cyrus

답변

1

사용 JQ와 서버에 연결을 할 수있는 또 다른 방법이 있나요 :

jq .version <filename> 
"0.2.54" 

전체 jason을 test라는 파일에 복사했습니다. 즉, 다음에서 누락되었습니다.

{"attributes": {},"groupings": {},"recipes":{},"version": "0.2.54","source_url": "","issues_url": ""} 
+0

그건'cat'의 쓸모없는 사용입니다. (http://www.iki.fi/era/unix/award.html). 'tr'을 제외하고 다른 잘 동작하는 필터 프로그램과 마찬가지로'jq'는 입력 파일 이름 인수의 선택적 목록을 허용합니다. – tripleee

+0

예, dev 및 테스트 환경에서 작동하지만 추가 프로덕션 환경에서는 설치할 수 없습니다. 우분투/Debia 플랫폼을위한 apt-get willwork. 제 시나리오는 Centos 6.5/6.7입니다. Centos repos는 jq를 찾을 수 없습니다. –