我在网上到处找,但没有结果。
我正在尝试构建一个包生成器(在shell/bash中),并且相应的包包含(一个或多个)json文件。当浏览json文件时,如果用户想要删除其中一个步骤,我必须首先考虑如果他想要删除的步骤是最后一个步骤。如果是这样,最后一步的前一步将包含逗号,但json格式不允许这样做。
{
"operation_machinetype": "Ford",
"operation_steps": [
"steps/Step_1/01_paint_the_car.json",
"steps/Step_2/01_drive_the_car.json",
"steps/Step_2/02_park_the_car.json"
]
}
例如,如果我删除'“steps/Step2/02_park_the_car.json”',那么'“steps/Step2/01_drive_the_car.json”,'将是最后一步,但逗号将导致错误。
提前感谢大家。
5条答案
按热度按时间qlfbtfca1#
uz75evzq2#
我知道类别是bash,但你可能应该使用一些JSON感知的东西,而不仅仅是编辑文件,就像它是基于行的一样。这样你就不必担心正确的json编码,而是可以专注于操作数据。我倾向于使用Python,因为内置的JSON支持和相对的普遍性(因为这在Python中非常简单)。也许类似于这个简单的脚本(其中一半以上是错误检查):
如果你从
json.dump
调用中去掉“indent=2”,它也会压缩json--这可能有助于减少包中浪费的空间。:)有几个命令行json操作器,我一直在为ksh 93编写一个基于C的可加载模块,但如果我今天要这样做的话,这就是我实际上解决问题的方法。
pwuypxnk3#
这可能对你有用(GNU sed):
它一次读取两行,如果找到匹配项,则删除所需的字符串。它先打印,然后删除第一行,再追加下一行。
注意:如果模式空间为空,则读取另一行,然后追加下一行。
91zkwejq4#
您可以使用多行正则表达式查找右括号前的最后一个逗号,例如:
fruv7luv5#
您可以考虑使用YAML: