免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1599 | 回复: 9

[文本处理] 急,在线等,不用sort和uniq,如何处理文本 [复制链接]

论坛徽章:
0
发表于 2015-09-06 12:03 |显示全部楼层
  
    有一个文本,处理的需求如下:
     a.txt文本内容如下:
        139123456|a|baidu.com|2|aa
        137222222|b|gogle.com|2|cc
        138333332|a|gogle.com|2|dd
        139232256|b|baidu.com|2|aa
        139123456|a|gogle.com|2|cc
        139123456|a|baidu.com|2|aa

1、在不用sort和uniq的情况下,计算当第一列前6位等于139123时,对第3列去重后总数,想要的结果如下:
    2

2、 在不用sort和uniq的情况下,计算当第一列前6位等于139123,并且第二列等a的时候,对第3列和第5列去重个数,想要的结果如下:
   baidu.com 1
   gogle.com 1

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2015-09-06 12:08 |显示全部楼层
回复 1# wzl189189


    为啥不用 sort 和 uniq 呀?

论坛徽章:
0
发表于 2015-09-06 12:20 |显示全部楼层
感觉数组好用一些

论坛徽章:
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
发表于 2015-09-06 12:30 |显示全部楼层
本帖最后由 jason680 于 2015-09-06 12:34 编辑

急?
http://bbs.chinaunix.net/thread-4137818-1-1.html

1 ...第一列前6位等于139123时,对第3列去重后总数...
$ awk -F'|' '{if(substr($1,1,6)=="139123")if(!a[$3]++)...' FILE
2

2 ...第一列前6位等于139123,并且第二列等a的时候,对第3列和第5列去重个数,...

$ awk -F'|' '{if(substr($1,1,6)=="139123"&&$2=="a")if(!a[$3","$5]++)...}' FILE
gogle.com 1
baidu.com 1

评分

参与人数 1信誉积分 +10 收起 理由
songyc_2015 + 10 很给力!

查看全部评分

论坛徽章:
0
发表于 2015-09-06 12:46 |显示全部楼层
回复 4# jason680

-------------------------
")if(!a[$3]++)...   

  关键要的就是省略号这一步啊,我想用 print $(#a
  • )    但这样做不行啊,我就是想要计算一个数组的结果啊,而不是列出来,你这个省略号究竟是啥?

       
  • 论坛徽章:
    11
    射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
    发表于 2015-09-06 14:24 |显示全部楼层
    都去重了,还要统计什么个数。

    论坛徽章:
    11
    程序设计版块每日发帖之星
日期:2015-09-09 06:20:00CU十四周年纪念徽章
日期:2016-05-16 11:11:112016科比退役纪念章
日期:2016-05-04 17:16:57程序设计版块每日发帖之星
日期:2016-02-20 06:20:00程序设计版块每周发帖之星
日期:2015-11-06 19:30:58程序设计版块每日发帖之星
日期:2015-09-12 06:20:00程序设计版块每日发帖之星
日期:2015-09-11 06:20:00每日论坛发贴之星
日期:2015-09-10 06:20:00程序设计版块每日发帖之星
日期:2015-09-10 06:20:00每日论坛发贴之星
日期:2015-09-09 06:20:0015-16赛季CBA联赛之四川
日期:2016-12-15 15:52:10
    发表于 2015-09-06 14:57 |显示全部楼层
    1、awk -F'|' '/^139123/{if(!a[$3]++)count++;} END{print count}' test.txt
    2、awk -F'|' '/^139123/{if(!a[$3","$5]++)b[$3]++} END{for(i in b) print i,b[i]}' test.txt

    论坛徽章:
    0
    发表于 2015-09-06 15:32 |显示全部楼层
    回复 4# jason680

    ---------------------------------------------

        我本来是用这个 print $(#a
  • ),计算出个数,但尝试后发现都是错的,请教下,这个怎么能用到你上面的脚本?
  • 论坛徽章:
    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
    发表于 2015-09-06 15:42 |显示全部楼层
    回复 8# wzl189189

    请看7楼
       

    论坛徽章:
    0
    发表于 2015-09-06 16:14 |显示全部楼层
    我爱你我的菜 发表于 2015-09-06 14:57
    1、awk -F'|' '/^139123/{if(!a[$3]++)count++;} END{print count}' test.txt
    2、awk -F'|' '/^139123/{if ...


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

    本版积分规则 发表回复

      

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

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP