jq基本用法:修改訪問
阿新 • • 發佈:2020-08-02
jq的基本用法:修改訪問
以輸入t.json為例:
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
]
}
修改欄位
$ jq '.F1=100' t.json
{
"F1": 100,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
]
}
$ jq '.F5[1].F52="new value"' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "new value"
}
]
}
增加欄位
$ jq '.F3="new value"' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
],
"F3": "new value"
}
$ jq '.F5[1].F53="new value"' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522",
"F53": "new value"
}
]
}
增加陣列和map
$ jq '.F5[2]={"F51": 513, "F52": "F523"}' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
},
{
"F51": 513,
"F52": "F523"
}
]
}
如果陣列是簡單型別:
$ jq . t.json
{
"F3": [
"F31",
"F32"
]
}
$ jq '.F3[2]="F33"' t.json
{
"F3": [
"F31",
"F32",
"F33"
]
}
增加陣列元素
利用length函式得到陣列的長度,然後把值設定到當前位置。
$ jq '.F3[.F3|length]="NEWValue"' t.json
刪除
使用del函式刪除元素,包括基本元素,物件和陣列元素。
$ jq 'del(.F1)' t.json
{
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
]
}
$ jq 'del(.F5[1].F52)' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512
}
]
}
刪除一個數組成員:
$ jq 'del(.F5[1])' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
}
]
}
刪除陣列成員
$ cat t.json
{
"F": [
"F0",
"F1",
"F2",
"F3",
"F4",
"F5"
]
}
$ jq 'del(.F)' t.json # delete field F
{}
$ jq 'del(.F[])' t.json # delete members of field F
{
"F": []
}
$ jq 'del(.F[0])' t.json # delete member of fields F[0]
{
"F": [
"F1",
"F2",
"F3",
"F4",
"F5"
]
}
$ jq 'del(.F[0,2,4])' t.json # delete member of fields F[0], F[2], and F[4]
{
"F": [
"F1",
"F3",
"F5"
]
}
執行多次修改
使用("|")連線多個命令。
連線符("|")功能類似shell裡面的("|"),把前面命令的輸出作為後面命令的輸入。
$ jq 'del(.F1) | del(.F5[1])' t.json
{
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
}
]
}
修改多個欄位:
$ jq '.F1="New F1" | .F2="New F2"' t.json
{
"F1": "New F1",
"F2": "New F2",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
]
}
或者:
$ jq '. +{F1: "New Fa", F2: "New F2"}' t.json
{
"F1": "New Fa",
"F2": "New F2",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
]
}
0人點贊
Linux常用工具之 - jq
作者:CodingCode
連結:https://www.jianshu.com/p/2ea233708b1d
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。