Не самый элегантный подход, но он работает с данными вашего примера:
$ tr, '\n' < file | awk -F: '{if(/\{/){NR=1}}NR==2{print $2}'
"FORESTER"
"OUTBACK"
tr
заменит все ,
символами новой строки. awk сбросит переменную NR
по умолчанию на 0
, когда увидит {
. Поскольку NR
содержит текущий номер строки и автоматически увеличивается в каждой строке, это означает, что он будет 2
только во второй строке каждого набора пар значений ключа -. Итак, когда NR
равно 2
, мы печатаем второе поле, разделенное :
-.
В качестве альтернативы используйте подходящий язык сценариев, поддерживающий данные JSON. Например, вperl
:
$ perl -M"JSON" -lne 'my $json = decode_json($_);
foreach $f (@{$json}){print $f->{"CAR"};}' file
FORESTER
OUTBACK