Сочетание умных диапазонов Awk и JQ - PullRequest
0 голосов
/ 04 марта 2019

У меня есть файл с несколькими строками в следующем формате json, который я хочу передать в jq для извлечения нескольких полей.

Формат:

{"userData":[{"user":{"loginName":"TEST",....]}.

{"userData":[{"user":{"loginName":"TEST1",....]}.

.... представляет «некоторые» json данные.

Я могу извлечь строки с помощью awk '/{\"userData\"/{p=1}; p; /}\./{p=0};', который, кажется, печатается очень хорошо.

Трудность, с которой я столкнулся, заключается в том, чтозапустить jq на каждой из строк и извлечь поля json.Как этого добиться с помощью одной команды awk?

1 Ответ

0 голосов
/ 04 марта 2019

Содержимое этого файла не является чисто json, если эти периоды действительно присутствуют в конце строк. Если , то каждая строка в этом файле представляет собой один объект json, за которым сразу следует точка, вы можете прочитать файл в формате raw (который передается в качестве входных данных для каждой строки в файле в виде строки), вырезать точку,затем выполните синтаксический анализ json и выполните обычную обработку.

Например, сбросьте все имена пользователей:

$ jq -R '.[:-1] | fromjson | .userData[].user.loginName' input.txt
...