2016-09-11 21 views
0

bashパースjsonファイル。私はgrepの「でこれを解決しようとしたbashでjsonファイルを解析しようとしています

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

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

しかし、他のサーバー上では、(スペースなし)このように見える - :私はこのようになりますshich JSONファイルからバージョン値を取得する必要がありますポー "しかし、スペースなしのjsonsでは動作しませんし、sed & awkでこれを解決しようとしていますが、スペースを持つjsonsでは動作しません。

apt-get install jq 

使用方法:この私はスクリプトでこれを使用しようとしていることを指摘し、次の使用をインストールするには、「ナイフのssh」

+0

このジョブには 'jq'を使用することをお勧めします。 – Cyrus

+0

私は見ましたが、環境から各サーバーに接続しており、各サーバーにツールをインストールする必要があるという事実に直面しています。 Ans \ dも "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

はい、開発環境とテスト環境では動作しますが、本番環境では余分なツールをインストールすることはできません。 apt-getはUbuntu/Debianプラットフォームのためのものです。私のシナリオは、Centos 6.5/6.7で、Centos reposはjqを見つけることができません。 –

関連する問題