我想寫一個批處理腳本來改變名爲example1.json和example2.json的2個jsons的「tags」鍵的值。需要用新值替換json中的tags字段
輸入example1.json
{
"info": {
"title": "My example swagger 1",
"version": "1.0"
},
"paths": {
"/v1/resource1": {
"get": {
"description": "This is the example1",
"tags": [
"example1"
],
"consumes": [
"*/*"
]
}
},
"/v1/resource2": {
"get": {
"tags": [
"example1"
],
"consumes": [
"*/*"
]
}
}
}
}
輸入example2.json
{
"info": {
"title": "My example swagger 2",
"version": "1.0"
},
"paths": {
"/v1/resource3": {
"get": {
"description": "This is the example2",
"tags": [
"example2"
],
"consumes": [
"*/*"
]
}
},
"/v1/resource4": {
"get": {
"tags": [
"example2"
],
"consumes": [
"*/*"
]
}
}
}
}
預期輸出是二jsons同名但現在的標籤值被改變。
Example1.json:
輸入標籤值 - 例1(這是JSON文件名)
輸出變量值 - tags1(按要求)
Example2.json
輸入標籤值 - example2(這是json文件名)
輸出標籤value - tags2(根據要求)
輸出Example1.json
{
"info": {
"title": "My example swagger 1",
"version": "1.0"
},
"paths": {
"/v1/resource1": {
"get": {
"description": "This is the example1",
"tags": [
"tag1"
],
"consumes": [
"*/*"
]
}
},
"/v1/resource2": {
"get": {
"tags": [
"tag1"
],
"consumes": [
"*/*"
]
}
}
}
}
輸出繼電器Example2.json
{
"info": {
"title": "My example swagger 2",
"version": "1.0"
},
"paths": {
"/v1/resource3": {
"get": {
"description": "This is the example2",
"tags": [
"tag2"
],
"consumes": [
"*/*"
]
}
},
"/v1/resource4": {
"get": {
"tags": [
"tag2"
],
"consumes": [
"*/*"
]
}
}
}
}
我寫了下面的命令在批處理腳本,但它不工作
sed -i "s/$/ #removenewlines#/" %1
sed -i ":a;N;$!ba;s/\n//g" %1
sed -i "s/\"tags\":\(.*\) \"%oldtagvalue%\"/\"tags\":\1 \"%newtagvalue%\"/g" %1
sed -i "s/ #removenewlines#/\n/g" %1
由於SED不工作對於多行,我將換行符更改爲#removenewlines#並將所有內容移至單行(第1行和第2行)。在第3行中,我嘗試使用通配符\(.*\)
和變量%oldtagvalue%
來查找關鍵標記,然後用%newtagvalue%
替換它。在第4行中,我正在格式化json。 上面的代碼中循環運行,所以對於變量第一環路值將是
$ echo %1
$ example1.json
$ echo %oldtagvalue%
$ example1
$ echo %newtagvalue%
$ tag1
對於第二個循環值將是
$ echo %1
$ example2.json
$ echo %oldtagvalue%
$ example2
$ echo %newtagvalue%
$ tag2
但它不工作。請指教。我也嘗試使用jq命令來實現它,但它沒有奏效。
您的「JSON」無效。我們無法弄清楚文本的實際意圖結構。請修復它。 –
@ApG - 問題很不清楚。請指定每個標記值(文件內)如何更改,並給出預期輸出的示例。 – peak
@JeffMercado ..我糾正了json。請指教 – ApG