Если ваш дистрибутив использует (или предлагает )perl-версию rename (, Debian и большинство производных):
cd mydir
rename 's/\.([^.]+)$/-bar.$1/
Я знаю несколько дистрибутивов (Я не помню, какой это был )предлагает его как prename
.
Я не очень хорошо разбираюсь в 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"