我需要创建一个具有以下内容的JSON文件:
{
"destinationVersion":"4",
"sourceVersion":"0",
"props":{
"METADATA_SIZE":"91669",
"METADATA_HASH":"O7CLdR2j7qoD0RI2k1AGc8b+xoWYn20Ic24eZ1ZWUWE=",
"FILE_SIZE":"980374602",
"FILE_HASH":"+XW4QKN5Y4ynTx43m4NYbMuk1x3P91f1biAVZBpj4fI="
}
}
props
块的主要障碍。这些props
的值必须从文本文件中读取。它们的格式如下:
FILE_HASH=+XW4QKN5Y4ynTx43m4NYbMuk1x3P91f1biAVZBpj4fI=
FILE_SIZE=980374602
METADATA_HASH=O7CLdR2j7qoD0RI2k1AGc8b+xoWYn20Ic24eZ1ZWUWE=
METADATA_SIZE=91669
我的任务是读取文件,并以某种方式创建最终的JSON(将格式化的文本追加到props
块中)。我尝试通过jq执行此操作,但是我不知道如何转换要添加到最终JSON中的文件。首选方式-bash + jq
由于Q仅指示key = value字符串的来源,因此下面的重点是将这些字符串转换为JSON对象。
调用:jq -n -R -f program.jq props.txt
program.jq:
[inputs | capture("^(?<key>[^=]*)=(?<value>.*)")]
| from_entries
在这里使用inputs
有几个小的优点,但不是必需的。