免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 411024571
打印 上一主题 下一主题

[文本处理] 关于规则统计 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-12-01 11:07 |只看该作者
回复 9# yestreenstars
这个可以,还简单点,有点小问题
我用如下数据测试的
865.|1
882.|3
882.1246.|1
882.883.1246.|1
结果为
865.|1
882.|5
882.1246.|1
882.883.1246.|1
没有统计1246和883
结果应该为
865.|1
882.|5
882.1246.|1
882.883.1246.|1
883.|1
1246.|2

   

论坛徽章:
6
处女座
日期:2014-04-02 16:07:17酉鸡
日期:2014-04-14 10:09:22子鼠
日期:2014-04-17 11:57:30辰龙
日期:2014-09-01 17:14:08戌狗
日期:2014-10-28 12:25:54未羊
日期:2014-11-14 11:31:58
12 [报告]
发表于 2014-12-01 11:15 |只看该作者
回复 10# 411024571
  1. awk -F"|" '{a[$1]=$2}END{for(i in a){if(!(i~/^[0-9]+\.$/)){split(i,b,".");for(j in b){a[b[j]"."]+=a[i]}}};for(i in a){if(i~/[0-9]/)print i"|"a[i]}}' o | sort -n
复制代码
我是按着你给的例子做的,例子里规则只有1位数,所以我做的时候没算长度。加上就好了。
既然每个规则后面都有. ,那用星辰大神的就好啦,简单方便。 {:3_193:}

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
13 [报告]
发表于 2014-12-01 11:23 |只看该作者
回复 11# 411024571
  1. echo '865.|1
  2. 882.|3
  3. 882.1246.|1
  4. 882.883.1246.|1' |awk -F\| '{sub(/.$/,"",$1);l=split($1,a,"[.]");if(l>1)for(i=1;i<=l;i++){b[a[i]"."]+=$2};b[$1"."]+=$2}END{for(i in b)print i"|"b[i]}'
  5. 865.|1
  6. 882.1246.|1
  7. 882.|5
  8. 883.|1
  9. 1246.|2
  10. 882.883.1246.|1
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
14 [报告]
发表于 2014-12-01 11:32 |只看该作者
回复 11# 411024571

出现这种问题说明你给的例子不够全面~
   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
15 [报告]
发表于 2014-12-01 11:37 |只看该作者
回复 11# 411024571
  1. [root@localhost ~]# awk -F'[.|]' 'NR==FNR{for(i=0;i++<NF-2;)a[$i]+=$NF;next}NF==3{sub(/[^|]+$/,a[$1]);delete a[$1]}1;END{for(i in a)print i".|"a[i]}' i i
  2. 865.|1
  3. 882.|5
  4. 882.1246.|1
  5. 882.883.1246.|1
  6. 883.|1
  7. 1246.|2
  8. [root@localhost ~]#
复制代码

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
16 [报告]
发表于 2014-12-01 11:40 |只看该作者
回复 1# 411024571
试试我的5楼的,看可用否?

   

论坛徽章:
0
17 [报告]
发表于 2014-12-01 11:58 |只看该作者
回复 16# super皮波
稍等,我在一个一个测试,我在外网,要到生产才能测试,先谢谢你


   

论坛徽章:
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
18 [报告]
发表于 2014-12-01 13:22 |只看该作者
awk -F '[.|]' '{for (i=1;i<NF-1;i++) {if(NF>3) {a[$0];a[$i".|"]+=$NF} else {a[$i".|"]+=$NF}}}END{for (i in a) print i a[i]}' 1
882.|5
883.|1
882.883.1246.|1
882.1246.|1
865.|1
1246.|2


   

论坛徽章:
1
2015七夕节徽章
日期:2015-08-21 17:58:43
19 [报告]
发表于 2014-12-02 17:06 |只看该作者
本帖最后由 shreychen 于 2014-12-02 17:08 编辑
  1. root@debian:~# cat file
  2. 1.|6
  3. 1.7.|3
  4. 2.|1
  5. 2.7.4|2
  6. 4.|1
  7. 7.|3
  8. root@debian:~# awk -F"\||\." '{for(i=1;i<NF;i++)sum[$i]+=$NF}END{for(i in sum){if(i)print i".|"sum[i]}}' file  
  9. 1.|9
  10. 2.|3
  11. 4.|3
  12. 7.|8
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP