使用sed将新行添加到.json文件

时间:2018-09-17 21:42:01

标签: json bash sed

我正在尝试向.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向文件添加文件路径列表?

1 个答案:

答案 0 :(得分:2)

在您的特定情况下,您可以摆脱

sed '$s%}%,"Files": '"${file_list}"' }%'

,但是任何sed解决方案都会变脆(如上所述),疼痛或两者兼而有之。

相比之下,这是在bash或类似bash的上下文中使用的一种简单而强大的解决方案:

jq --argjson f "${file_list}" '.Files=$f'