Я пытаюсь преобразовать список содержимого файла 7z в json и не могу исправить отсутствующий разделитель между преобразованными выходными блоками.
Я немного новичок в преобразовании json, но обнаружил, что jq может сделатьработа.Я прочитал документацию jq и нашел примеры внутри здесь и там также в другом месте без решения.
Пожалуйста, найдите вариант использования:
Командная строка:
jq -f pf_7z.jq -R
<h2>The input file demo.lst:</h2>
<pre><code> Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2018-06-23 14:02:16 D.... 0 0 Installer
2018-06-23 14:02:16 ..... 3381 1157 Installer\Readme
2018-06-23 14:02:16 ..... 4646 1157 Installer\License.txt
2018-06-23 14:02:16 ..... 138892 136152 Installer\Setup.exe
</code>
Файл фильтра pf7z.jq:
def parse:
def parse_line:
. | map(match("(\\d+-\\d+-\\d+) (\\d+:\\d+:\\d+) (D|.).* +(\\d+) +(\\d+) +(.*\\\\)([^\\\\]*)\\.(.*)")) | .[] |
({
"date" :(.captures[0].string),
"time" :(.captures[1].string),
"attr" :(.captures[2].string),
"size" :(.captures[3].string),
"path" :(.captures[5].string),
"name" :(.captures[6].string),
"extn" :(.captures[7].string)
});
split("\n") | ( {} + (parse_line));
parse
Ожидаемый результат должен быть:
{"date":" 2018-06-23 "," time ":" 14:02:16 "," attr ":". "," Size ":" 4646 "," path ":" Installer \ "," name ": "License", "extn": "txt"}, {"date": "2018-06-23", "time": "14:02:16", "attr": ".", "Size": "138892", "path": "Installer \", "name": "Setup", "extn": "exe"}
И я получил только:
{"date":" 2018-06-23 "," time ":" 14:02:16 "," attr ":". "," Size ":" 4646 "," path ":" Installer \ "," name ": "License", "extn": "txt"} {"date": "2018-06-23", "time": "14:02:16", "attr": ".", "Size":"138892", "path": "Installer \", "name": "Setup", "extn": "exe"}
без разделителя запятых между блоками.
Спасибо;-)