通过删除逗号将文本文件格式化为json

时间:2013-06-06 00:07:56

标签: json bash

我必须将文本文件转换为json格式。文本文件如下所示:

[  {
    "rule": "soi",
    "val": [
        {
            "abc": "OT01",
            "del": 15
        },
        {
            "abc": "OT11",
            "del": 15
        },
        {
            "abc": "OT20",
            "del": 15
        },

    ],
    "ion": "OT"
},
{
    "rule": "soi",
    "val": [
        {
            "abc": "UF01",
            "del": 15
        },
                    {
            "abc": "UF08",
            "del": 15
        },
     ],
    "ion": "UF"
},
{
    "rule": "soi",
    "val": [
        {
            "abc": "UO01",
            "del": 15
        },

        {
            "abc": "UO08",
            "del": 15
        },
        {
            "abc": "UO09",
            "del": 15
        },
        {
            "abc": "UO10",
            "del": 15
        },
        {
            "abc": "UO20",
            "del": 15
        },
     ],
    "ion": "UO"
} ]

所以基本上我想删除,行之前的],。使用awksed

在bash中执行此操作的任何想法

2 个答案:

答案 0 :(得分:0)

这是一个简单的sed脚本,可以执行您想要的操作:

#!/bin/sed -rf
:begin
$!{
   N
   bbegin
}
s/,(\s*\],)/\1/g

使用chmod使其可执行,然后您可以运行它:./sedscript myfile。请记住,sed实际上不会修改文件,只是将修改后的文本输出到标准输出,因此您需要IO重定向来收集文件中的更改。

答案 1 :(得分:0)

如果您不关心换行符,间距和缩进,可以使用JavaScript interperter为您完成这项工作:

echo "print(JSON.stringify(" `cat jsonfile.txt` "));" | js | tee jsonfile.txt