Use sed and awk to prettify json

$ cat prettify.sed 
s/,/,\r\n/g
s/\[/\r\n\[\r\n/g
s/\]/\r\n\]\r\n/g
s/{/\r\n{\r\n/g
s/}/\r\n}\r\n/g

 

$ cat prettify.awk 
BEGIN{  depth = 0;}
/\[/ {  
        sp = 0;
        while(sp++ < depth)
            printf("    "); 
        print $0;
        
        depth += 1;
     }

/{/  { 
        sp = 0;
        while(sp++ < depth)
            printf("    "); 
        print $0;
        
        depth += 1;
     }

/\]/ { 
        if (depth > 1) 
            depth -= 1;
            
        sp = 0;
        while(sp++ < depth)
            printf("    "); 
        print $0;
     }

/}/  { 
        if (depth > 1) 
            depth -= 1;
        
        sp = 0;
        while(sp++ < depth)
            printf("    "); 
        print $0;
     }

/".*":".*"/ {sp = 0;while(sp++ < depth)printf("    "); print $0;}

 

$ cat digitalstrategy.json | sed -f prettify.sed | awk -f prettify.awk | head -50
{
    "agency":"NSF",
    "generated":"2014-08-07 06:38:36",
    [
        {
            "id":"2.1",
            "due":"90 Days",
            "due_date":"2012\/08\/21",
            [
                {
                    "type":"select",
                    "name":"2-1-status",
                    "label":"Overall Status",
                    [
                        {
                            "label":"Not Started",
                            "value":"not-started"
                        }
                        {
                            "label":"In Progress",
                            "value":"in-progress"
                        }
                        {
                            "label":"Completed",
                            "value":"completed"
                        }
                    ]
                    "value":"completed"
                }
            ]
        }
        {
            "id":"2.1.1",
            "parent":"2.1",
            "text":"Paragraph on customer engagement approach",
            "due":"90 days",
            "due_date":"2012\/08\/21",
            [
                {
                    "type":"textarea",
                    "name":"2-1-1-customer-engagement-approach",
                    "label":"Paragraph on customer engagement approach",
                    [
                    ]
                }
            ]
        }
        {
            "id":"2.1.2",
            "parent":"2.1",

 


 

$ cat prettify.awk 
BEGIN{  depth = 0;}
/\[/ {  
#        sp = 0;
#        while(sp++ < depth)
#            printf("    "); 
#        print $0;
        
        depth += 1;
     }

/{/  { 
#        sp = 0;
#        while(sp++ < depth)
#            printf("    "); 
#        print $0;
        
        depth += 1;
     }

/\]/ { 
        if (depth > 1) 
            depth -= 1;
            
#        sp = 0;
#        while(sp++ < depth)
#            printf("    "); 
#        print $0;
     }

/}/  { 
        if (depth > 1) 
            depth -= 1;
        
#        sp = 0;
#        while(sp++ < depth)
#            printf("    "); 
#        print $0;
     }

{sp = 0;while(sp++ < depth)printf("    "); print $0;}

 

转载于:https://www.cnblogs.com/long123king/p/4003593.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值