2012-05-22 1 views
0

У меня есть динамически созданный json-файл. Я хочу знать только «ошибки» части «статуса». Есть ли простой способ сделать это?прочитал часть файла JSON

... 
a lot of lines 
... 

"status": { 
    "errors": [ 
     { 
     "message": "Input contained no data", 
     "reason": "invalid" 
     } 
    ], 
    "state": "DONE" 
    } 
... 
a lot of lines 
... 

Мне нужно использовать вывод в сценарии оболочки, поэтому awk является предпочтительным.

+0

Вы должны использовать модуль синтаксического анализа JSON в Python или Perl или автономный JSON парсер. Регулярные выражения не подходят для этой задачи. –

+0

Вы можете использовать модуль разбора JSON в awk: см. Https://github.com/dubiousjim/awkenough/blob/master/README.lib и выполните поиск query_json. Просто говорю, что противодействовать широко распространенному заблуждению, что awk слишком маловероятен для такого рода вещей. Тем не менее, я ничего не вижу в вопросе, который делает awk более подходящим, чем любой другой инструмент. – dubiousjim

ответ

0

Это может работать для вас:

sed '/^ "status": {/,/^ }$/!d;/^ "errors": \[/,/^ \],/!d' file.txt 
0

Я хотел бы использовать sed, чтобы выбрать диапазон строк, как это:

sed -e '/^ "errors\": \[/,/^ ],/!d' file.txt 

результат:

"errors": [ 
     { 
     "message": "Input contained no data", 
     "reason": "invalid" 
     } 
    ], 

Рассмотрим добавление ожидаемых результатов, если я неправильно понял ваш вопрос.

НТН

 Смежные вопросы

  • Нет связанных вопросов^_^