我有一个. json文件,看起来像这样:
{
"Direction": "down",
"Conversion": "Complete",
"Version": "v1.0.20170724"
}
我想在结尾添加一行,所以我这样做了:
sed -i '$s/}/,\t"Task":"Yes"}/' data.json
它将文件更改为:
{
"Direction": "down",
"Conversion": "Complete",
"Version": "v1.0.20170724"
, "Task":"Yes"
}
有没有办法让逗号放在倒数第二行的末尾,而不是放在最后一行?
3条答案
按热度按时间7lrncoxx1#
您可以使用以下
sed
命令实现此目的:说明:
fileLength=$(wc -l file.json | cut -d' ' -f1);
用于确定文件的长度,这里5
。$((fileLength-1))s/$/,/;
将在第4行末尾添加逗号。${fileLength}i \\\t\"Task\":\"Yes\"
用于在最后一行之前插入"Task":"Yes"
!您可以将命令的输出重定向到新文件,或者使用
sed -i.bak
激活内联模式并直接在文件中进行更改。2skhul332#
这可能对你有用(GNU sed):
一次读取两行到模式空间中。如果第二行以
}
开头,则在换行符之前插入,
,打印修改后的第一行,将新值替换到第一行并重复。ppcbkaq53#
如果JSON文件是用缩进格式化的,那么最后搜索唯一的
}
。然后在此之前插入一行。最后运行一个JSON lint: