다음 텍스트를 바꿔야 합니다.
"name":["abc1234"], age:"24"
그리고
"name": "abc1234", age: "24"
답변1
내가 올바르게 이해했다면 "이름" 목록을 첫 번째 요소로 바꿔야 합니다. 이 경우 Json 프로세서를 사용해 보십시오.
jq '.name=.name[0]' ex.json
(전체 게시 취소 예시에서 조정해야 할 수도 있음)
답변2
일반적인 대답은
man 7 regex
하지만 구체적으로
sed -E 's/"name":\["abc1234"\], age:"24" /"name": "abc1234", age:"24"/g' file > new
또는
sed -E 's/"name" *: *\["([^"]+)"\], *age *: *"([0-9]+)"/"name": "\1", age:"\2"/g' file > new
grep -E '"name" *: *\[' new
답변3
또 다른 옵션은 다음을 사용하는 것입니다.Python JSON 모듈좋다이 답변. 간단한 예는 다음과 같습니다.
in.json
{ "name":["abc1234"], "age":"24" }
replaceInJson.py
#!/usr/bin/python3 import json with open("in.json", "r") as f: data = json.load(f) print("Before:", data) data["name"] = data["name"][0] print("After: ", data)
산출
Before: {'name': ['abc1234'], 'age': '24'} After: {'name': 'abc1234', 'age': '24'}
답변4
JSON 문서가 올바른 형식으로 구성되어 있고 두 키 name
합계가 age
아래와 같이 최상위 키라고 가정합니다.
{
"name": [ "abc1234" ],
"age": "24"
}
jq
...그런 다음 키 값을 배열의 첫 번째 요소로 바꿀 수 있습니다.name
$ jq '.name |= first' file
{
"name": "abc1234",
"age": "24"
}
입력이 다음과 같은 유사한 요소의 배열인 경우
[
{
"age": "24",
"name": [ "abc1234" ]
},
{
"age": "24",
"name": [ "abc1234" ]
},
{
"age": "24",
"name": [ "abc1234" ]
},
{
"age": "24",
"name": [ "abc1234" ]
}
]
그런 다음 map
각 요소에 대해 다음을 수행합니다.
$ jq 'map(.name |= first)' file
[
{
"name": "abc1234",
"age": "24"
},
{
"name": "abc1234",
"age": "24"
},
{
"name": "abc1234",
"age": "24"
},
{
"name": "abc1234",
"age": "24"
}
]