[英]Merging JSON files using a bash script
我是新手來編寫腳本。 我試圖編寫一個合並多個json文件的腳本。 例如:
檔案1:
{
"file1": {
"foo": "bar"
}
}
文件2:
{
"file1": {
"lorem": "ipsum"
}
}
合並文件:
{
"file1": {
"foo": "bar"
},
"file2": {
"lorem": "ipsum"
}
}
這就是我想出的:
awk 'BEGIN{print "{"} FNR > 1 && last_file == FILENAME {print line} FNR == 1 {line = ""} FNR==1 && FNR != NR {printf ","} FNR > 1 {line = $0} {last_file = FILENAME} END{print "}"}' json_files/* > json_files/all_merged.json
它有效,但我覺得有更好的方法。 有任何想法嗎?
使用awk處理JSON並不是一個非常好的主意。 無意義的空白中的任意更改將破壞您的代碼。 相反,使用jq
; 這是為了這種事情。 要組合兩個對象,請使用*
運算符,即兩個文件:
jq -s '.[0] * .[1]' file1.json file2.json
對於任意多個文件,使用reduce
將其順序應用於所有文件:
jq -s 'reduce .[] as $item ({}; . * $item)' json_files/*
-s
開關使jq
在處理之前將JSON文件的內容讀入大型數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.