/var/place
폴더에는 다음과 같은 100-1000개의 파일이 있습니다.
-rw-r--r-- 1 root root 261 Dec 24 22:52 total_machines-10.json
-rw-r--r-- 1 root root 261 Dec 24 22:52 total_machines-11.json
-rw-r--r-- 1 root root 261 Dec 24 22:52 total_machines-12.json
-rw-r--r-- 1 root root 261 Dec 24 22:52 total_machines-13.json
-rw-r--r-- 1 root root 261 Dec 24 22:52 total_machines-14.json
-rw-r--r-- 1 root root 261 Dec 24 22:52 total_machines-15.json
-rw-r--r-- 1 root root 261 Dec 24 22:52 total_machines-16.json
-rw-r--r-- 1 root root 261 Dec 24 22:52 total_machines-17.json
-rw-r--r-- 1 root root 261 Dec 24 22:52 total_machines-18.json
-rw-r--r-- 1 root root 261 Dec 24 22:52 total_machines-19.json
. .
각 파일( total_machines_rhel-xx.json
)은 다음과 같습니다(테마 값은 다를 수 있음).
{
"version": 1,
"partitions": [
{
"topic": "total_machines_rhel",
"partition": 10,
"replicas": [
1001,
1003,
1004
],
"log_dirs": [
"any",
"any",
"any"
]
}
]
}
테마를 인쇄하는 방법값이 모든 파일의 이름
기대되는 성과
total_machines-10.json topic=total_machines_rhel
total_machines-11.json topic=total_machines_fedora
total_machines-12.json topic=total_machines_aix
.
.
.
답변1
jq
버전 1.5+
jq -r '.partitions[] | "\(input_filename) topic=\(.topic)"' total_machines-*.json
Perl의 JSON 모듈 사용:
perl -MJSON -0777 -nE '
$h = decode_json($_); say "$ARGV topic=$h->{partitions}[0]{topic}"
' total_machines-*.json
그리고밀러, 현재 파일 이름으로 색인화된 스트림 외부 배열을 사용합니다.partitions
Miller는 현재 JSON 배열을 정수 키 맵으로 평면화하지만 파일에는 각 배열에 하나의 요소만 있으므로 이 경우 심각한 제한은 아닙니다. 실제로는 Perl 버전에 의존하는 것 보다 나을 것이 없습니다. 중간 요소는 더욱 악화됩니다 [0]
.
mlr --ijson --onidx put -S -q '
@value[FILENAME] = "topic=".${partitions:0:topic}; end {emit @value, "a"}
' total_machines-*.json