2016-09-11 6 views
0

Bash parsen JSON-Datei. Ich brauche den Versionswert aus einer JSON-Datei erhalten shich wie folgt aussieht:versuchen, JSON-Datei mit Bash zu analysieren

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

Aber auf anderen Servern es so aussehen (ohne Leerzeichen)

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

Ich habe versucht, diese Lösung mit „grep - Po "aber würde nicht auf die jsons ohne Leerzeichen arbeiten und dann versuchen, dies mit sed & awk zu lösen, aber würde nicht auf jsons mit Leerzeichen arbeiten. Gibt es eine andere Möglichkeit, diese Feststellung zu tun, dass ich versuche, dies in einem Skript zu verwenden und eine Verbindung zu Servern mit „Messer ssh“

+0

Ich empfehle, 'jq' für diesen Job zu verwenden. – Cyrus

+0

Ich sah, aber es ist komplizierter angesichts der Tatsache, dass ich auf jedem Server aus einer Umgebung verbinden und ich muss das Tool auf jedem Server installieren. Außerdem aktualisieren Sie das centos repo, weil ich es nicht einfach mit "yum install jq" –

+0

mit Ihrem Beispiel installieren konnte: 'tr -cd '[0-9].' Cyrus

Antwort

1

Verwendung jq, verwenden Sie die folgende installieren:

apt-get install jq 

Verbrauch:

jq .version <filename> 
"0.2.54" 

Bitte beachten Sie, dass ich Ihre gesamte Jason in eine Datei namens test kopiert habe. das heißt, ich habe folgendes hinzugefügt:

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

Das ist ein [nutzloser Gebrauch von 'Katze'] (http://www.iki.fi/era/unix/award.html). Genau wie jedes andere gut benützte Filterprogramm (außer 'tr'!) Akzeptiert' jq' eine optionale Liste von Argumenten für die Namen von Eingabedateien. – tripleee

+0

Ja, es wird auf Entwicklungs- und Testumgebungen funktionieren, aber ich kann keine zusätzlichen Tools in der Produktion installieren. apt-get willwork für Ubuntu/Debia-Plattformen. Meine Szenarien sind mit Centos 6.5/6.7 und Centos Repos können nicht jq finden. –

Verwandte Themen