2016-07-29 71 views
-3

我有兩個jsons:合併在bash 2個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(和其他像這兩個)使用只有內置bash命令到一個單一的json。

只有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:配方[AlertsSearch]「:沒有這樣的文件或目錄 cat:]:沒有這樣的文件或目錄 cat:」environment「:」INT「,:沒有這樣的文件或目錄 cat:」3scale「:{:沒有這樣的文件或目錄 cat:「provider-key」:>「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