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",
时间: 2024-08-08 19:09:50

Use sed and awk to prettify json的相关文章

sed和awk之awk篇

(原创文章,谢绝转载~) awk是处理文本的另一利器,也是对文本逐行处理.awk的基本syntax是: awk 'pattern {action} ' inputfile #examples awk '/regex/ { print $0 }' inputfile 在awk中用 $1,$2,$3.... 表示每行的第1,2,3....列,而 $0 表示整行数据 另有内置变量,借助awk的这些内置变量,可以非常方便的处理文本: NF ,列数(Number of Fileds),进而 $NF 为最后

Shell脚本编程与sed,awk工具的使用--9月15日课程作业

一.shell程序的运行原理 1.脚本 脚本或程序源文件是一种文本文件,将文本文件转换成机器指令有两种转换方式: 编译执行:预处理-->编译-->汇编-->链接:事先完成,结果:二进制程序文件 例如:C, C++ 解释执行:由解释器全程参与运行过程,每次读取一行,运行一行: 例如:  Python:程序控制结构,调用编程库完成程序编写: 库文件:功能模块,在编程中可调用: Bash:调用机器上命令程序文件进行程序编写: 外部命令:各应用程序提供: 2.原理 当shell运行一个程序时,会

日志分析查看——grep,sed,sort,awk运用

概述 我们日常应用中都离不开日志.可以说日志是我们在排查问题的一个重要依据.但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了.于是,很有必要通过一些手段来高效地辅助你来快速的从日志中找到你要找的问题.本文通过一个从项目中衍生出来的例子从查找日志,筛选日志和统计日志3个方面层层递进来简述日志文件查看中一些有用的手段.(注:在linux环境下) 目录 0.查找关键日志grep 1.查找关键日志grep 2.精简日志内容 sed 3.对记录

第14章 grep、sed、awk 正则表达式

1. 如何把 /etc/passwd 中用户uid 大于500 的行给打印出来?   awk -F ':' '$3>500' /etc/passwd2. awk中 NR,NF两个变量表示什么含义?awk -F ':' '{print $NR}' /etc/passwd  会打印出什么结果出来?    NR 表示行 : NF表示列 awk -F ':' '{print $NR}' /etc/passwd   会依次打印对应的行数的段,第一行打印第一段,第二行打印第二段... 到了最后就打印空行了 

linux(5)--补充(管道| / 重定向&gt; / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www.cnblogs.com/chengmo/archive/2010/10/21/1856577.html以此为例: cat test.sh test1.sh 2>/dev/null | grep -n 'echo' 此时若test.sh 不存在,报错信息不会输出到屏幕中,而是转入 /dev/null中,如

正则、grep、sed、awk

每次用到正则都要蛋疼一下,索性总结一下在这里. 正则 正则表达式主要分为基础正则和扩展正则.注意,正则和一般命令行输入的命令的通配符不同.正则只使用于支持这种表示法的工具,如:vi,grep,sed.awk.而ls等命令不支持这种表示,只能使用bash自身的通配符. 基础部分: [abc] 匹配括号中的一个 [^abc] 匹配非括号中的一个(取反) ^word 以word开头 word$ 以word结尾 [n1-n2] 从n1到n2之间的所有连续字符. 注意:这个连续与否,与ASCII编码有关,

grep、sed、awk

正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 正则表达式由一些普通字符和一些元字符(metacharacters)组成. 检索工具:grep grep [-cinvABC] 'word' filename:根据关键字或正则表达式在文件中查找匹配的行 -c:显示匹配行数 -i:不区分大小写 -n:显示行号 -v:显示不匹配的行 -An:连匹配行的下面n行一起显示 -Bn:连匹配行的上面n行一起显示 -

bash sed和awk

随着科技的发展,软硬件的不断更新.人们通过计算机逐渐从重复性劳动工作中解脱出来,那么计算机如何通过程序执行命令来实现我们预先设定好的步骤呢,请看下图: 一.我们知道计算机由硬件和软件组成.而软件又分为系统内核跟应用程序:当用户查看一条信息,或者编译一个程序指令,那么他的交互就由计算机通过系统内核调用程序接口,执行单一或者单一指令组成的复杂的程序组成,执行完后,又通过程序接口返回到内核通过输入输出设备呈现在大家面前. 二.程序接口按照他们的语法和编译方式将程序汇编或者调用成系统内核可以识别的指令进

shell之三大文本处理工具grep、sed及awk

grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更强大而已,且已独立成一种语言来介绍. grep:文本过滤器,如果仅仅是过滤文本,可使用grep,其效率要比其他的高很多: sed:Stream EDitor,流编辑器,默认只处理模式空间,不处理原数据,如果你处理的数据是针对行进行处理的,可以使用sed: awk:报告生成器,格式化以后显示.如果对处