我正在尝试向.json添加一行,但是遇到了一些麻烦。该文件当前具有以下信息:
{
"Direction": "down",
"Conversion": "Complete",
"Version": "v1.0.20170724"
}
我想添加新信息,以使.json文件看起来像这样:
{
"Direction": "down",
"Conversion": "Complete",
"Version": "v1.0.20170724"
"Files": ["path/to/file1/file1",
"path/to/file2/file2"]
}
我尝试使用此命令,在其中创建了一个变量(file_list),该变量列出了两个文件的路径:
sed -i '$s/}/,\n"Files":"${file_list}"}/' sample.json
但是我最终却得到了这个:
{
"Direction": "down",
"Conversion": "Complete",
"Version": "v1.0.20170724"
"Files": "${file_list}"
}
有没有一种方法可以使用sed向文件添加文件路径列表?
答案 0 :(得分:2)
在您的特定情况下,您可以摆脱
sed '$s%}%,"Files": '"${file_list}"' }%'
,但是任何sed解决方案都会变脆(如上所述),疼痛或两者兼而有之。
相比之下,这是在bash或类似bash的上下文中使用jq的一种简单而强大的解决方案:
jq --argjson f "${file_list}" '.Files=$f'