У вас должно получиться что-то вроде:
menuentry 'Debian' --class debian --class gnu-linux --class gnu --class os {
load_video
set gfxpayload=keep
insmod gzio
insmod ext2
insmod fat
echo 'Loading Linux...'
linux /boot/vmlinuz-3.16.0-4-amd64 cryptdevice=UUID=ffe7a64d-e552-4db9-b0f3-1e42be118059:cryptolvm root=/dev/Outsider-vg/Outsider-debianroot rw
echo 'Loading initial ramdisk...'
initrd /boot/initrd.img-3.16.0-4-amd64
}
Но учтите, что insmod part_gpt
уже должен быть добавлен в ваш grub.cfg. lvm
и luks
не нужны, потому что с этим справится ядро (вам нужны соответствующие хуки ядра ), grub загружает только образ linux.
Вы также можете рассмотреть возможность установки gron
, которая представляет собой утилиту для «Сделки JSON greppable!».
С a
, определенным как в вашем вопросе,
echo $a | gron
возвращает
json.data = [];
json.data[0] = {};
json.data[0].coordinates = [];
json.data[0].coordinates[0] = {};
json.data[0].coordinates[0].dates = [];
json.data[0].coordinates[0].dates[0] = {};
json.data[0].coordinates[0].dates[0].date = "2020-07-08T15:53:23Z";
json.data[0].coordinates[0].dates[0].value = 25.1;
json.data[0].coordinates[0].lat = 39.23054;
json.data[0].coordinates[0].lon = 9.11917;
json.data[0].parameter = "t_2m:C";
json.dateGenerated = "2020-07-08T11:53:23Z";
json.status = "OK";
json.user = "unknown_unknown";
json.version = "3.0";
что действительно облегчает обработку:
$ echo $a | gron | sed -n '/value/{s/.* //; s/;//; p;}'
25.1
$ echo $a | gron | awk '/value/ {sub(/;/,""); print $NF;}'
25.1
Использование Miller с выравниванием массива JSON по умолчанию:
$ mlr --ijson --onidx cut -f 'data:0:coordinates:0:dates:0:value' <<<"$a"
25.1
или регулярное выражение -, соответствующее сглаженному имени элемента
$ mlr --ijson --onidx cut -r -f 'value$' <<<"$a"
25.1