2016-07-29 26 views
-3

Ich habe zwei jsons:Zusammenführen von zwei json in bash (kein jq)

env.json

{ 
    "environment":"INT" 
} 

roles.json

{ 
    "run_list":[ 
     "recipe[splunk-dj]", 
     "recipe[tideway]", 
     "recipe[AlertsSearch::newrelic]", 
     "recipe[AlertsSearch]" 
    ] 
} 

erwartete Ausgabe soetwas wie dies sein sollte:

{ 
     "environment":"INT", 
    "run_list":[ 
      "recipe[splunk-dj]", 
      "recipe[tideway]", 
      "recipe[AlertsSearch::newrelic]", 
      "recipe[AlertsSearch]" 
     ] 
    } 

Ich muss diese zwei Json zusammenführen (und andere wie diese beiden) in einen einzigen JSON unter Verwendung nur verfügbarer eingebauter Bash-Befehle.

haben nur sed, cat, echo, schwanz, wc zu meiner verfügung.

+0

@Kusalananda - du hast Recht, also habe ich sie aus der Überlegung entfernt. Schauen Sie sich jetzt http://www.osdata.com/programming/shell/builtincommands.html für Befehle an. – Scooby

+0

http://stackoverflow.com/q/19529688/2088135 –

+0

@ TomFenech - kann jq nicht verwenden. Nur eingebaute Befehle von bash. – Scooby

Antwort

-3

Ein bisschen hacky, aber hoffentlich wird es tun.

env_lines=`wc -l < $1` 
env_output=`head -n $(($env_lines - 1)) $1` 
roles_lines=`wc -l < $2` 
roles_output=`tail -n $(($roles_lines - 1)) $2` 
echo "$env_output" "," "$roles_output" 
+1

Wenn dem OP geglaubt werden soll, kann man 'Katze',' Kopf', 'Schwanz' oder' WC' nicht verwenden. – chepner

+0

@asenovm Danke, ich glaube, diese Befehle sind für mich verfügbar, aber das scheitert mit: cat: {: Keine solche Datei oder Verzeichnis cat: "run_list": [: Keine solche Datei oder Verzeichnis cat: "Rezept [Splunk -dj] ",: Keine solche Datei oder Verzeichnis Katze:" Rezept [Tideway] ",: Keine solche Datei oder Verzeichnis Katze:" Rezept [AlertsSearch :: newrelic] ",: Keine solche Datei oder Verzeichnis cat:" Rezept [AlertsSearch] ": Keine solche Datei oder Verzeichnis Katze:]: Keine solche Datei oder Verzeichnis cat:" Umgebung ":" INT ",: Keine solche Datei oder Verzeichnis cat:" 3scale ": {: Keine solche Datei oder Verzeichnis cat: "provider-key":> "dee9b91dc184afdc8adb6fa79f9ede11" ,: Nein, – Scooby

+0

@chepne r - siehe bearbeiten – Scooby

4

Sagen wer auch immer die Einschränkung „bash nur“ setzen auf das Projekt, das bash für die Verarbeitung von JSON nicht ausreichend ist, und jq bekommen.

$ jq --slurp 'add' env.json roles.json 
+0

das ist eine dumme Antwort und beantwortet nicht, was meine Frage ist. Ich verstehe, dass jq dafür hilfreich ist, aber nichts ist überall perfekt und Sie haben Situationen, in denen Sie jq nicht verwenden können. – Scooby

+2

Wenn die Verarbeitung von JSON wichtig ist, rufen Sie die richtigen Tools zur Verarbeitung ab. – chepner

+0

wieder, nicht der Punkt. – Scooby