2016-07-29 3 views
-3

У меня есть два jsons:Объединить два JSON в Баш (без JQ)

env.json

{ 
    "environment":"INT" 
} 

roles.json

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

ожидается выход должен быть какой-то вещи, как это:

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

Мне нужно объединить эти два json (и другие, подобные этим двум) в один единственный json, используя только доступные встроенные команды bash.

только есть sed, cat, echo, tail, wc в моем распоряжении.

+0

@ Kusalananda - вы правы, поэтому я удалил их из рассмотрения. Посмотрите http://www.osdata.com/programming/shell/builtincommands.html прямо сейчас для команд. – Scooby

+0

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

+0

@TomFenech - не может использовать jq. Просто встроенные команды bash. – Scooby

ответ

-3

Немного хакерский, но, мы надеемся, это будет сделано.

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

Если полагаться на OP, вы не можете использовать 'cat',' head', 'tail' или' wc'. – chepner

+0

@asenovm Спасибо, я считаю, что эти команды доступны мне, но это не удается: cat: {: Нет такого файла или каталога cat: "run_list": [: Нет такого файла или каталога cat: "recipe [splunk -dj] ":: Нет такого файла или каталога cat:" recipe [tideway] ",: Нет такого файла или каталога cat:" recipe [AlertsSearch :: newrelic] ",: Нет такого файла или каталога cat:" recipe [AlertsSearch] ": Нет такого файла или каталога cat:]: Нет такого файла или каталога cat:" environment ":" INT ",: Нет такого файла или каталога cat:" 3scale ": {: Нет такого файла или каталог cat: «поставщик-ключ»:> «dee9b91dc184afdc8adb6fa79f9ede11»,: Нет таких – Scooby

+0

@chepne r - см. править – Scooby

4

Скажите, кто поставил ограничение «Баш только» на проекте, который bash не достаточно для обработки JSON, и получить jq.

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

Это глупый ответ и не отвечает на мой вопрос. Я понимаю, что jq полезен для этого, но ничто не является идеальным везде, и у вас могут быть ситуации, когда вы не можете использовать jq. – Scooby

+2

Если обработка JSON важна, получите нужные инструменты для ее обработки. – chepner

+0

еще раз, не суть. – Scooby