免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2739 | 回复: 13

[文本处理] 文本处理json格式 [复制链接]

论坛徽章:
2
子鼠
日期:2014-12-09 14:03:562015年亚洲杯之巴勒斯坦
日期:2015-03-31 10:49:39
发表于 2017-05-22 15:39 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-05-22 15:45 |显示全部楼层
本帖最后由 jason680 于 2017-05-22 16:14 编辑

回复 1# zriplj

$ awk -F" *: *" '{gsub(/[",]/,"")}/enable/{en=$2}/name/{print $2,en}' a.json
app-mod-shop true
app-mod-sys true
app-mod-ditui true





--- some bug and modify ------------------------
$ awk -F" *: *" '{gsub(/[",]/,"")}/status/{st=$2}/name/{print $2,st}' a.json
app-mod-shop enable
app-mod-sys disable
app-mod-ditui enable


论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2017-05-22 15:57 |显示全部楼层
回复 1# zriplj


  1. awk -vRS="}" '{if(match($0,/"status": "([^"]+).*"name": "([^"]+)/,a)) print  a[2],a[1]}' file
复制代码

论坛徽章:
2
子鼠
日期:2014-12-09 14:03:562015年亚洲杯之巴勒斯坦
日期:2015-03-31 10:49:39
发表于 2017-05-22 15:57 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2017-05-22 16:04 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2017-05-23 12:55 编辑

处理1楼,6楼数的据,用的脚本完全相同。此贴很好地体现了,【面向字符】和【面向对象】的区别。和ps处理json数据类型的优势。powershell代码:

  1. $json树 = get-content 'd:\5-22\aaa.json' | Convertfrom-Json
  2. foreach ($temp001 in $json树.attach)
  3. {
  4.     write-host $temp001.name,$temp001.status
  5. }
复制代码



围观ps处理json数据类型的优势:
http://bbs.chinaunix.net/thread-4253467-1-1.html
http://bbs.chinaunix.net/thread-4252649-1-1.html
http://bbs.chinaunix.net/thread-4261368-1-1.html
http://bbs.chinaunix.net/thread-4261430-1-1.html
1 两个json合并问题。从第一棵json树上砍下json枝杈,折吧折吧后,嫁接到第二棵json树上。
2 【最后3组数据?】楼主给出4组数据,每组2个。例子却只有2组数据,10楼也是搞出2组。到底是2,3,4?让人困扰。
3 我写了段代码,怎么也嫁接不出来,就跑出去吃饭了,回来仔细一看,源json是有问题的,无法闭合。
按照10楼的解题,先修复json使之闭合了,再跑了一下我写的代码,得出了结果。结果和10楼基本相同。


论坛徽章:
2
子鼠
日期:2014-12-09 14:03:562015年亚洲杯之巴勒斯坦
日期:2015-03-31 10:49:39
发表于 2017-05-22 17:37 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-05-22 20:33 |显示全部楼层
回复 6# zriplj

$ awk -F,  'function qq(s){return"\""s"\""}function get(s,k){if(match(s, qq(k)": *"qq("([^\"]+)"),m)){a[k]=m[1];return 1}return 0}{for(n=1;n<=NF;++n){if(get($n,"status"))fs=1;if(get($n,"name"))fn=1;if(fs*fn){print a["name"],a["status"];fs=fn=0}}}' b.json
app-mod-shop enable
app-mod-sys disable
app-mod-ditui enable

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
发表于 2017-05-22 21:05 |显示全部楼层
本帖最后由 haooooaaa 于 2017-05-22 21:09 编辑

error.......

论坛徽章:
2
子鼠
日期:2014-12-09 14:03:562015年亚洲杯之巴勒斯坦
日期:2015-03-31 10:49:39
发表于 2017-05-23 10:40 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-05-23 11:23 |显示全部楼层
本帖最后由 jason680 于 2017-05-23 11:28 编辑

回复 9# zriplj

{"code":"4001","reason":null,"result":null,"attach":[{"name":"app-mod-shop","address":"192.168.1.80:1488","enable":true,"status":"enable"},{"name":"app-mod-sys","address":"192.168.1.80:1200","enable":true,"status":"disable"},{"name":"app-mod-ditui","address":"192.168.1.80:1600","enable":true,"status":"enable"}],"success":true}

  qq function ==> 字符串 加上 双引号(")

1. 以逗号(,)为分隔符
   awk -F,

2a. 找"name":"..." 放入(关连)数组
  get($n,"name")  => match(s, qq(k)": *"qq("([^\"]+)"),m)
  放入(关连)数组  a[k]=m[1]   ( a["name"] = "app-mod-shop")

  if(get($n,"name"))fn=1;  ==> 找着了,设标志(flag)


2b. 找"status":"..." 放入(关连)数组
  get($n,"status")  => match(s, qq(k)": *"qq("([^\"]+)"),m)
  放入(关连)数组  a[k]=m[1]   ( a["status"] = "enable")

  if(get($n,"name"))fs=1;  ==> 找着了,设标志(flag)

3. fs, fn 标志都有, 打印..
if(fs*fn){print a["name"],a["status"];fs=fn=0}


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP