/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
) 看起来像这样(而主题值可能是 diff )
{
"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
和磨坊主,使用由当前文件名索引的流外数组。请注意,Miller 目前将 JSON 数组展平为整数键控映射,但由于您的文件每个数组中只有一个元素,因此在本例中这并不是一个严重的限制 - 它实际上并不比依赖perl 版本中partitions
元素中的数据更糟糕[0]
。
mlr --ijson --onidx put -S -q '
@value[FILENAME] = "topic=".${partitions:0:topic}; end {emit @value, "a"}
' total_machines-*.json