免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请教多文件按文件名关键字分组的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-14 22:51 |只看该作者 |倒序浏览
场景

当前目录下多个文件

#ls -l *.txt|awk '{print$9}'
tmp_aaa_mo_201505010500_00001.txt
tmp_aaa_mo_201505010530_00001.txt
tmp_aaa_mo_201505020500_00001.txt
tmp_aaa_mo_201505020530_00001.txt
tmp_aaa_mo_201505020530_00002.txt
tmp_aaa_mo_201505030500_00001.txt
tmp_aaa_mo_201505030530_00001.txt
tmp_aaa_mo_201505030530_00002.txt
tmp_aaa_mo_201505030530_00003.txt
tmp_aabb_mo_201505010500_00001.txt
tmp_aabb_mo_201505010530_00001.txt
tmp_aabb_mo_201505010545_00001.txt
tmp_aabb_mo_201505010545_00002.txt
tmp_aabb_mo_201505020500_00001.txt
tmp_aabb_mo_201505020515_00001.txt
tmp_aabb_mo_201505020530_00001.txt
tmp_aabb_mo_201505020530_00002.txt
tmp_aabb_mo_201505030500_00001.txt
tmp_aabb_mo_201505030530_00001.txt
tmp_aabb_mo_201505030530_00002.txt
tmp_aabb_mo_201505030550_00001.txt
tmp_aabb_mo_201505030550_00002.txt

要求输出
关键字 日期  文件个数
aaa  201501 3
aaa  201502 3
aaa  201503 4
aabb 201501 4
aabb 201502 4
aabb 201503 5

即按照 关键字 aaa 和日期(天)分组 统计文件个数 如果能加上文件大小总和就更好了。
关键字 日期  文件个数  总大小MB

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
2 [报告]
发表于 2015-05-14 23:15 |只看该作者
本帖最后由 songyc_2015 于 2015-05-14 23:18 编辑

回复 1# jacson007
  1. ls -l *.txt|awk '{split($9,a,/_/);b[a[2]" "substr(a[4],1,8)]++}END{for(s in b)print s,b[s]}'
复制代码

论坛徽章:
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
3 [报告]
发表于 2015-05-14 23:41 |只看该作者
回复 1# jacson007

$ ls -l *.txt | awk 'BEGIN{print "关键字 日期  文件个数 总大小MB"}{split($9,a,"_");k=a[2]" "substr(a[4],1,8);c[k]++;s[k]+=$5}END{t=asorti(c,b);for(n=1;n<=t;n++)printf("%s %s %.1f\n",b[n],c[b[n]],s[b[n]]/(1024*1024))}' | column -t
关键字  日期      文件个数  总大小MB
aaa     20150501  2         0.0
aaa     20150502  3         0.0
aaa     20150503  4         0.0
aabb    20150501  4         0.0
aabb    20150502  4         0.0
aabb    20150503  5         0.0

   

论坛徽章:
0
4 [报告]
发表于 2015-05-15 00:47 |只看该作者
两位高手,我明天试试
我可能漏了一点
关键字可以有多个,而且长度不定
比如还有
tmp_bcs_mo_201505030530_00002.txt
tmp_xyz_mo_201505030550_00001.txt
tmp_mn_mo_201505030550_00002.txt

论坛徽章:
0
5 [报告]
发表于 2015-05-15 11:14 |只看该作者
回复 2# songyc_2015


    结果是一个总数,没有分组

论坛徽章:
0
6 [报告]
发表于 2015-05-15 11:15 |只看该作者
回复 3# jason680


  完美实现,多谢了

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
7 [报告]
发表于 2015-05-15 11:58 |只看该作者
回复 5# jacson007

ls -l *.txt文件名在第个列,就把split($9,a,/_/)中的$9改为,试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP