У меня большой файл с последовательностью JSON
объектов. У каждого объекта есть значение, которое я хочу извлечь и запустить через внешнюю программу. Как вы инструктируете jq
сделать это?
Например, если у меня есть следующий JSON
файл:
{
"id": 1,
"corp": "Slate Rocks",
"pubKey": "-----BEGIN PUBLIC KEY-----\nMFowDQYJKoZIhvcNAQEBBQADSQAwRgJBAMBUAZGIzQsPO1PXgjdCJUxcZNc6Y4FY\ncVC+JxZIUfaz0WkLI7H4tiKCsd+2F+3Xf+hObSbdoUi1UuT5uzpsda8CAQM=\n-----END PUBLIC KEY-----",
"update": "2018-12-10"
}
{
"id": 2,
"corp": "Pi-ryte",
"pubKey": "-----BEGIN PUBLIC KEY-----\nMFowDQYJKoZIhvcNAQEBBQADSQAwRgJBALzXcOJvZz2UFPDJphTm++Ho9t+lkTQf\nxH0nSp7lbfCHL5Y5YbnD7pgbD/e/PGIHt+cch3foOlUyH+b0Ht53ZO0CAQM=\n-----END PUBLIC KEY-----",
"update": "2019-03-14"
}
{
"id": 3,
"corp": "Marble Dreams",
"pubKey": "-----BEGIN PUBLIC KEY-----\nMFowDQYJKoZIhvcNAQEBBQADSQAwRgJBAN1L9v8ZbpJ1/GMlNOfGFjQhhO2KTKpj\nOfp97CDUdCAQ6wzLjagGKbySC16/MpnAvoPUmYEtTRtbdH/rdMGdvd8CAQM=\n-----END PUBLIC KEY-----",
"update": "2018-12-17"
}
и я хочу вывести модули открытого ключа RSA, мне нужно выполнить openssl
для каждого значения "pubKey"
.
Это работает только для первого "pubKey"
:
$ jq -r '.pubKey' seq.json | openssl rsa -pubin -noout -modulus
Modulus=C054019188CD0B0F3B53D7823742254C5C64D73A6381587150BE27164851F6B3D1690B23B1F8B62282B1DFB617EDD77FE84E6D26DDA148B552E4F9BB3A6C75AF
Есть ли что-то вроде:
$ jq -r '.pubKey | system("openssl rsa -pubin -noout -modulus")' seq.json
или
$ jq -r '.pubKey as $pk | system("openssl rsa -pubin -noout -modulus -in $pk")' seq.json