example1.json 및 example2.json이라는 2 개의 jons 아래에 대해 "tags"키의 값을 변경하는 배치 스크립트를 작성하려고합니다.json의 태그 필드를 새 값으로 바꾸어야 함
입력 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": [
"*/*"
]
}
}
}
}
입력 예상 출력이 동일한 이름을 가진 두 jsons하지만 태그 값이 현재 변경
{
"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": [
"*/*"
]
}
}
}
}
example2.json.
Example1.json :
입력 태그 값 - JSON (파일 이름이다) 예 1
출력 태그 값 - (필요에 따라) 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": [
"*/*"
]
}
}
}
}
OUPUT 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
작동하지 않습니다 여러 라인의 경우 줄 바꿈을 # removenewlines #로 변경하고 모든 것을 한 줄로 옮겼습니다 (줄 1과 줄 2). 3 행에서 와일드 카드 \(.*\)
과 변수 %oldtagvalue%
을 사용하여 키 태그를 찾은 다음 %newtagvalue%
으로 대체하려고합니다. 4 번 줄에서 json을 다시 포맷합니다. 변수들의 제 1 루프 값
$ echo %1
$ example2.json
$ echo %oldtagvalue%
$ example2
$ echo %newtagvalue%
$ tag2
될 것이다 2 루프 값의
$ echo %1
$ example1.json
$ echo %oldtagvalue%
$ example1
$ echo %newtagvalue%
$ tag1
될 것이기 때문에 위의 코드는 루프에서 실행하지만 작동되지 않는다. 제발 조언. 또한 jq 명령을 사용하여이를 수행하려고 시도했지만 잘 작동하지 않았습니다.
"JSON"이 (가) 유효하지 않습니다. 우리가 그 텍스트 얼룩의 실제 의도 된 구조를 알아내는 것은 불가능합니다. 고쳐주세요. –
@ApG - 질문은 명확하지 않습니다. 각 태그 값 (파일 내)을 변경하는 방법을 지정하고 예상 출력의 예를 제공하십시오. – peak
@JeffMercado .. 나는 json을 정정했다. 제발 조언을 – ApG