우리는 다음과 같은 것을 가지고 있습니다 json
( example 1
)
실시예 1
more file.json
{
"version": 1,
"partitions": [
{
"topic": "list_of_cars",
"partition": 2,
"replicas": [
1003,
1004,
1005
],
"log_dirs": [
"any",
"any",
"any"
]
},
{
"topic": "list_of_cars",
"partition": 4,
"replicas": [
1005,
1006,
1001
],
"log_dirs": [
"any",
"any",
"any"
]
},
{
"topic": "list_of_cars",
"partition": 0,
"replicas": [
1001,
1002,
1003
],
"log_dirs": [
"any",
"any",
"any"
]
},
{
"topic": "list_of_cars",
"partition": 1,
"replicas": [
1002,
1003,
1004
],
"log_dirs": [
"any",
"any",
"any"
]
},
{
"topic": "list_of_cars",
"partition": 5,
"replicas": [
1006,
1001,
1002
],
"log_dirs": [
"any",
"any",
"any"
]
},
{
"topic": "list_of_cars",
"partition": 3,
"replicas": [
1004,
1005,
1006
],
"log_dirs": [
"any",
"any",
"any"
]
}
]
}
topic
(예 1)에서 각 배열을 잘라내고 싶습니다 .
file1.json file2.json file3.json ..
아래 그림 과 같이 json 파일로 리디렉션합니다 .
첫 번째 파일
more file1.json
{
"version": 1,
"partitions": [{
"topic": "list_of_cars",
"partition": 2,
"replicas": [
1003,
1004,
1005
],
"log_dirs": [
"any",
"any",
"any"
]
}]
}
두 번째 파일
more file2.json
{
"version": 1,
"partitions": [{
"topic": "list_of_cars",
"partition": 4,
"replicas": [
1005,
1006,
1001
],
"log_dirs": [
"any",
"any",
"any"
]
}]
}
세 번째 파일
more file3.json
.
.
.
답변1
특정 파티션의 식별자가 저장된 것으로 나타나 므로 .partition[].partition
파티션을 반복하여 각 식별자에 대해 해당 특정 식별자가 없는 파티션을 제거할 수 있습니다.
다음은 식별자가 공백 등이 없는 단순한 정수라고 가정합니다.
for part in $(jq '.partitions[].partition' file.json); do
jq --argjson part "$part" 'del(.partitions[] | select( .partition != $part ))' file.json >file-partition-"$part".json
done
이렇게 하면 배열의 인덱스가 아닌 파티션 이름을 딴 각 파티션에 대한 파일이 생성됩니다 .partition[]
.