我的 JSON 文件是,
{
"student1": {
"Name": "Caroline",
"Age": "24",
"email": "Caroline123@gmail.com",
"Phone": "1234567890",
"Blood group": "O+ve"
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的输出是,
{
"student1": {
"Name": "Caroline",
"Age": "24",
"email": "Caroline123@gmail.com",
"Phone1": "1234567890",
"Phone2": "1267345980",
"Phone3": "9865432130",
"Blood group": "O+ve"
}
}
Run Code Online (Sandbox Code Playgroud)
新的键值对Phone1、Phone2和Phone3的值存储在名为 VALUES 的数组中,需要添加到键Phone的位置
m=1
for i in ${VALUES[@]}
do
jq --arg newval "$i" '.student1 += { VALUES$m: $newval }' <<<"$filepath"
let "m += 1"
done
Run Code Online (Sandbox Code Playgroud)
上面是我的代码,但它不起作用!任何人都可以帮助我获得所需的输出!
您可以使用+=运算符,例如
jq '.student1 += { "Phone2": "1267345980", "Phone3": "9865432130" }'
Run Code Online (Sandbox Code Playgroud)
并将现有密钥重命名Phone为Phone1
jq --sort-keys '.student1 += { "Phone2": "1267345980", "Phone3": "9865432130" }| .[] | .["Phone1"] = .Phone | del(.Phone) | {"Student1" : . }'
Run Code Online (Sandbox Code Playgroud)
编辑(由于您上次编辑):考虑到您有一个数组,VALUES例如
$ declare -p VALUES
declare -a VALUES='([0]="\"1267345980\"" [1]="\"9865432130\"")'
Run Code Online (Sandbox Code Playgroud)
并有一个名为 的 JSON 文件Students.json,然后使用
m=2
for i in "${VALUES[@]}"
do
cat <<< $(jq '.student1 += { "Phone'"${m}"'" : '"${i}"'}' Students.json) > Students.json
let "m += 1"
done
Run Code Online (Sandbox Code Playgroud)
为了添加带有键Phone2并Phone3从数组中获取的元素
PS:在 GNU/Linux 上测试
| 归档时间: |
|
| 查看次数: |
4203 次 |
| 最近记录: |