Я ищу инструмент, который, как и grep, позволяет мне не только находить совпадения с файлом json, но и возвращает контекст совпадения.
Я знаю, что с помощью:
cat json_file | grep -C30 properties
Я бы получил 30 строк вокруг всех совпадений с помощью «свойств», но мне бы хотелось что-то, что давало бы окружающее тело матча на разных уровнях глубины.
Ниже приведен пример данных.Он будет внутри файла с именем json_file
{
"dataitem-1":{
"aliases":{
"dataitem-morning":{
},
"dataitem-evening":{
}
},
"mappings":{
"dataitem-temp":{
"properties":{
"dataset":{
"index":"not_analyzed",
"type":"string"
},
"fields":{
"properties":{
"channel":{
"index":"not_analyzed",
"type":"string"
}
}
}
}
}
}
},
"dataitem-2":{
"aliases":{
"dataitem-morning":{
},
"dataitem-evening":{
}
},
"mappings":{
"dataitem-temp":{
"properties":{
"dataset":{
"index":"not_analyzed",
"type":"string"
},
"fields":{
"properties":{
"channel":{
"index":"not_analyzed",
"type":"string"
}
}
}
}
}
}
}
Я бы хотел, чтобы инструмент сделал что-то вроде:
cat json_file | json_grep -depth=4 'fields'
И он должен вернуть:
{
"dataitem-2":{
"aliases":{
"dataitem-morning":{
},
"dataitem-evening":{
}
},
"mappings":{
"dataitem-temp":{
"properties":{
"dataset":{
"index":"not_analyzed",
"type":"string"
},
"fields":{
"properties":{
"channel":{
"index":"not_analyzed",
"type":"string"
}
}
}
}
}
}
}