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;}
    
  • 相关阅读:
    第七章 第一月:开始 第二周:链接建设(2)
    基础篇 第四节 项目进度计划编辑 之 日历
    VSS2005 使用说明
    删除存储过程
    基础篇 第四节 项目进度计划编辑 之 任务关联性设定
    转载: input 的css技巧
    js: js判断回车键
    一个简单邮件发送类
    转载: php发送邮件原理
    css 小经验: 重构css的优化与技巧
  • 原文地址:https://www.cnblogs.com/long123king/p/4003593.html
Copyright © 2011-2022 走看看