Как напечатать значения пути и ключа файла JSON

Если ваш дистрибутив использует (или предлагает )perl-версию rename (, Debian и большинство производных):

cd mydir
rename 's/\.([^.]+)$/-bar.$1/

Я знаю несколько дистрибутивов (Я не помню, какой это был )предлагает его как prename.

3
10.01.2020, 19:43
1 ответ

Я не очень хорошо разбираюсь в jq, но я нашел это в Интернете, и я думаю, что это сработает в вашем случае:

Вырезать и вставить версию:

jq -r 'paths(scalars) as $p  | [ ( [ $p[] | tostring ] | join(".") ), ( getpath($p) | tojson )] | join(": ")' short.json 

Easy (или )для чтения версии:

jq -r '
paths(scalars) as $p
  | [ ( [ $p[] | tostring ] | join(".") )
   , ( getpath($p) | tojson )
    ]
  | join(": ")
' short.json

Результат:

Reservations.0.Instances.0.ImageId: "ami-a"
Reservations.0.Instances.0.InstanceId: "i-a"
Reservations.0.Instances.0.InstanceType: "t2.micro"
Reservations.0.Instances.0.KeyName: "ubuntu"

А поскольку мне нужны бонусные очки, вот хак sed, который вы можете использовать, чтобы получить желаемый результат:

... | sed "s/^/\'./; s/:/\':/; s/\.0/[]/g"

Какие выходы:

'.Reservations[].Instances[].ImageId': "ami-a"
'.Reservations[].Instances[].InstanceId': "i-a"
'.Reservations[].Instances[].InstanceType': "t2.micro"
'.Reservations[].Instances[].KeyName': "ubuntu"
7
27.01.2020, 21:29

Теги

Похожие вопросы