zoukankan      html  css  js  c++  java
  • Use sed and awk to prettify json

    $ cat prettify.sed 
    s/,/,
    /g
    s/[/
    [
    /g
    s/]/
    ]
    /g
    s/{/
    {
    /g
    s/}/
    }
    /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;}
    
  • 相关阅读:
    xml转义字符在mybatis动态sql中的使用
    jdbc类型与java类型
    aop日志(记录方法调用日志)
    mysql数据库关联查询【lert join】常见使用
    maven项目基本配置
    mapper文件的参数传入与获取
    idea新建项目出现push rejected如何解决
    快速从2个List集合中找出相同/不同元素
    Windows 环境下安装RocketMQ
    RabbitMQ java客户端集成 Spring 开发环境
  • 原文地址:https://www.cnblogs.com/long123king/p/4003593.html
Copyright © 2011-2022 走看看