json jq 向每个 object/array 添加相同的元素
json jq add same element to each object/array
我有 json 结构如下的文件:
[
{
"uid": 11111,
"something": {
(...)
}
},
{
"uid": 22222,
"something": {
(...)
}
}
]
我将一次读取所有文件 (cat *),我想知道哪个部分来自哪个文件,所以我需要以某种方式对其进行分组。
所以,我的想法是将每个文件的内容移动到具有自己成员的更高(父)对象。
[
{
"var1": "val1"
"var2": "val2"
{
"uid": 11111,
"something": {
(...)
}
},
{
"uid": 22222,
"something": {
(...)
}
}
}
如何使用 jq 做到这一点?
#!/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
我有 json 结构如下的文件:
[
{
"uid": 11111,
"something": {
(...)
}
},
{
"uid": 22222,
"something": {
(...)
}
}
]
我将一次读取所有文件 (cat *),我想知道哪个部分来自哪个文件,所以我需要以某种方式对其进行分组。
所以,我的想法是将每个文件的内容移动到具有自己成员的更高(父)对象。
[
{
"var1": "val1"
"var2": "val2"
{
"uid": 11111,
"something": {
(...)
}
},
{
"uid": 22222,
"something": {
(...)
}
}
}
如何使用 jq 做到这一点?
#!/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