$ 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;}

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

  1. Sed、Awk单行脚本快速参考

    文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...

  2. sh脚本学习之: sh脚本 、sed、awk

    sh脚本 sh命令的批处理文件,支持更复杂的逻辑. Shell中的变量 参数 $0 当前脚本路径 $1....$n 脚本执行对应的第n个参数 条件判断 文件判断 test [op] path e存在 ...

  3. 一个利用sed和awk处理文本的小栗子

    这两天做<Linux操作系统>课程的作业,碰到了一个题目,感觉很有意思,很考验对awk掌握的熟练度,故特意拿来分享. 首先说题目是这样的,有这样一段文本: RECORD #这是多余的注释行 ...

  4. Pyp 替代sed,awk的文本处理工具

    Linux上文本处理工具虽不少,像cut,tr,join,split,paste,sort,uniq,sed,awk这些经典工具让人眼花缭乱,而且都太老了,使用方法都不太人性化,尤其awk,语法简直反 ...

  5. sed and awk学习笔记

    sed and awk 背景 awk起源追溯至sed和grep,进而追溯至共同的行编辑器ed.实用工具grep来源于ed命令:g/re/p .实用工具awk和sed有一个共同的选项-f用于指定脚本的名 ...

  6. 三大文本处理工具grep、sed及awk的简单介绍

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...

  7. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  8. sed和awk最佳入门教程

    文档<sed和awk最佳入门教程>——摘自<实战linux shell编程与服务器管理>,简单易懂,适合初学者. 下载地址:http://download.csdn.net/d ...

  9. grep、sed、awk、perl、js、vim等对正则表达式的支持的差别

    grep.sed.awk.perl等对正则表达式的支持的差别 grep 2.5.1 egrep 2.5.1 sed 3.02 sed 4.07 awk 3.1.1 perl 5.8.0 vim 6.1 ...

随机推荐

  1. Struts2之获取ServletAPI

    1.通过ServletActionContext类 //获取request对象 HttpServletRequest request = ServletActionContext.getRequest ...

  2. Codeforces 1148C(思维)

    题面 给出一个长度为n的排列a,每次可以交换序列的第i个和第j个元素,当且仅当\(2 \times |i-j| \geq n\),求一种交换方案,让序列从小到大排好序 分析 重点是考虑我们怎么把第x个 ...

  3. word2vec 中的数学原理具体解释(二)预备知识

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/peghoty/article/details/37969635   word2vec 是 Googl ...

  4. markdown语法规则

    标题 标题是每篇文章最常用的格式,在markdown中如果要定义标题的话,只要在这段文字之前加#号就可以了. # 一级标题 ## 二级标题 ### 三级标题 以此类推,总共六级标题,建议在#号之后加上 ...

  5. Nginx学习总结:proxy与rewrite模块(三)

    斜体下划线,表示建议采用默认配置,无需显式的配置 一.ngx_http_upstream_module 此模块中可配置的指令并不是很多.nginx的负载均衡算法包括: 1)round-robin:轮询 ...

  6. geometry_msgs的ros message 类型赋值

    test_custom_particles.cpp // // Created by gary on 2019/8/27. // #include <ros/ros.h> #include ...

  7. ivew-admin 校验 自定义验证表单多层嵌套

    1.prop=对象 <FormItem label=" prop="shapeDifference.heightSpaceT2"> <Input v-m ...

  8. bzoj2560 串珠子 状压DP

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2560 题解 大概是这类关于无向图的联通性计数的套路了. 一开始我想的是这样的,考虑容斥,那么就 ...

  9. bzoj 1001 原图最小割转化为对偶图最短路

    题目大意: 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形 ...

  10. Vue.js----更换头像不实时更新问题

    原因 导致问题的原因是缓存造成的,因为你图片变了但是读取头像的地址还会没有变化的 解决思路 所以解决的思路就是上传之后让图片地址改变,那么我们就可以在上传的时候给地址加上一个时间戳那么久可一达到目的了 ...