2015-12-10 88 views
1

我有一個JSON結構是這樣的文件:JSON JQ相同的元素添加到每個對象/數組

[ 
    { 
    "uid": 11111, 
    "something": { 
     (...) 
    } 
    }, 
    { 
    "uid": 22222, 
    "something": { 
     (...) 
    } 
    } 
] 

我會在同一時間讀取所有文件(*貓),我想知道部分來自哪個文件,所以我需要以某種方式進行分組。

所以,我的想法是將每個文件的內容移動到具有自己成員的較高(父)對象。

[ 
    { 
    "var1": "val1" 
    "var2": "val2" 
    { 
     "uid": 11111, 
     "something": { 
      (...) 
     } 
    }, 
    { 
     "uid": 22222, 
     "something": { 
      (...) 
     } 
    } 
    } 

如何用jq做到這一點?

+0

你能提供一個完整的輸入和輸出完全例子嗎?我不知道「var1」和「var2」應該來自哪裏。 –

回答

0
#!/bin/bash 

# For simplicity, assume each file in FILELIST contains a single JSON entity. 
# Then instead of using cat FILELIST, use mycat FILELIST, e.g. mycat *.json 

function mycat { 
    for file 
    do 
    jq --arg file "$file" '{"file": $file, "contents": .}' "$file" 
    done 
} 

如果你有足夠最近JQ的版本(例如JQ 1.5),那麼一個替代方案是:

jq '{file: input_filename, contents: .}' FILELIST 
相關問題