免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 40794 | 回复: 5
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-07-28 14:41 |只看该作者 |倒序浏览
本帖最后由 xlw010aya 于 2016-07-28 14:56 编辑

我有个转成json格式的数据文件,每行大概格式是:
"13912345678":"111,222,333,444,555,666,777"
我希望能输出成
13912345678^333^444^111^222
请问能有这么简单的办法么?

我自己是这样做的:
读取每行,
    cut -d\: -f 1
得到 "13912345678"
    #*\\"去除左边的"
得到  13912345678"
    %\\"*去除右边的"
得到  13912345678

右边的就再cut , 一次。结果是效率有点低,每秒100个左右,太慢了

希望大神帮忙看看,谢谢了!

论坛徽章:
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
2 [报告]
发表于 2016-07-28 15:01 |只看该作者
本帖最后由 jason680 于 2016-07-28 15:02 编辑

回复 1# xlw010aya

$ awk -F'[:,]+' 'BEGIN{OFS="^"}{gsub("\"","")}NF=5' FILE
13912345678^111^222^333^444

   

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
3 [报告]
发表于 2016-07-28 15:21 |只看该作者
本帖最后由 moperyblue 于 2016-07-28 21:00 编辑
  1. echo '"13912345678":"111,222,333,444,555,666,777"'|awk -F':|,' '{gsub(/"/,"");OFS="^";print $1,$4,$5,$2,$3}'
复制代码
13912345678^333^444^111^222
  1. echo '"13912345678":"111,222,333,444,555,666,777"'|sed -r ':a;s/\^/&/5;tb;s/\x22:\x22|,/^/;ta;:b;s//\n/5;s/\x22//;P;d'
复制代码
13912345678^111^222^333^444
  1. echo '"13912345678":"111,222,333,444,555,666,777"'|sed -r ':a;s/\^/&/5;tb;s/\x22:\x22|,/^/;ta;:b;s/\x22//;s/([^^]*\^)([^^]*\^[^^]*)\^([^^]*\^[^^]*)/\1\3^\2/;s/\^/\n/5;P;d'
复制代码
13912345678^333^444^111^222

求职 : 技术支持/维
论坛徽章:
0
4 [报告]
发表于 2016-07-28 17:07 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
5 [报告]
发表于 2016-07-28 18:26 |只看该作者
本帖最后由 sunzhiguolu 于 2016-07-28 18:27 编辑
  1. perl -nle 'print join("^",@a[0,3,4,1,2]) if(y/0-9/^/cs and (@a=grep{length}split(/\^/)))' f
复制代码
13912345678^333^444^111^222

论坛徽章:
1
程序设计版块每日发帖之星
日期:2016-07-30 06:20:00
6 [报告]
发表于 2016-07-28 20:41 |只看该作者
本帖最后由 云遮雨 于 2016-07-28 20:58 编辑

sed 's/"//g;s/://g' file | awk -F, '{print $1"^"$4"^"$5"^"$2"^"$3}'
awk -F, '{gsub(":","");gsub("\"","");print $1"^"$4"^"$5"^"$2"^"$3}' file
awk -F, 'BEGIN {OFS="^"} {gsub(":","");gsub("\"","");print $1,$4,$5,$2,$3}' file
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP