Grep-подобный инструмент для поиска совпадений в файле JSON, возвращающем соответствующий контекст - PullRequest
0 голосов
/ 17 октября 2018

Я ищу инструмент, который, как и 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"
                        }
                    }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...