Мне нужно распечатать ключ и значения из строки json. я Allready разобрать простой JSON строкуParse json array в сценарии оболочки
{
"Name": "test1",
"CreateDate": "2016-08-30T10:52:52Z",
"Id": "testId1",
}
мой код, как этот
q1=$(echo $x | grep -Po '"Name":.*?[^\\]",'| perl -pe 's/"Name": //; s/^"//; s/",$//');
q2=$(echo $x | grep -Po '"Id":.*?[^\\]",'| perl -pe 's/"Id": //; s/^"//; s/",$//');
echo $q1 "," $q2;
Но этот код не применяется для JSon строки, как этот
x='{ "TestNames":
[{
"Name": "test1",
"CreateDate": "2016-08-30T10:52:52Z",
"Id": "testId1"
},
{
"Name": "test2",
"CreateDate": "2016-08-30T10:52:13Z",
"Id": "testId2"
}]
}';
Мне нужно напечатать, как это
test1 , testId1
test2 , testId2
i Можно ли получить данные, подобные этому, используя команду grep?
данные недействительны json. Анализатор json сказал бы: 'parse error: ожидаемая другая пара ключ-значение в строке 6, столбец 10' (команда после пары ключ-значение допускается только в том случае, если за ней следует другая пара ключей/значений) – hek2mgl
Поскольку все предлагают вы устанавливаете сторонние программы. Если ваш формат JSON не изменяется, а ваши ключи ограничены, и вам нужно решение * pure Bash + grep *, вы можете [grep Имена и Идентификаторы в 2 массивах bash отдельно] (http: // stackoverflow.com/a/24890830/3828957), а затем [распечатать их рядом] (http://stackoverflow.com/a/16510716/3828957). – makadev
@makadev * Если ваш формат «JSON» не изменяется, а ваши ключи ограничены, и вам нужно чистое решение Bash + grep * ... вы делаете что-то неправильно. – hek2mgl