免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求一个分组的shell脚本,高手进来帮个忙 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-01-15 17:21 |只看该作者
回复 8# yestreenstars
因为是数据库里出来的列表,所以默认是顺序的,但是例如
cap_friend_goods_20131011
cap_friend_goods_20141011
cap_friend_goods_20150211
cap_friend_goods_20150911
cap_friend_goods_20151012
cap_friend_goods_history
会把
cap_friend_goods_history
作为这个组的最后一项

   

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
12 [报告]
发表于 2014-01-15 17:31 |只看该作者
回复 10# fengfeng919


稍作修改即可:
  1. awk -F _ '{v=$0;NF--;if(!a[$0]++){print s"\n----------------\n"v}}v~/[0-9]$/{s=v}END{print s}' file
复制代码

论坛徽章:
0
13 [报告]
发表于 2014-01-15 17:33 |只看该作者
回复 12# ly5066113

感谢tim大哥,我要好好的理解一下,晕着呢,好好


   

论坛徽章:
0
14 [报告]
发表于 2014-01-16 11:38 |只看该作者
回复 12# ly5066113

tim哥,感谢昨天的帮忙,目前内容有个小变化,,就是前缀是一样,但是有年月格式还同时有年月日的时间格式,如下:
cap_goods_201111
cap_goods_201112
cap_goods_201201
cap_goods_20130429
cap_goods_20141229
cap_goods_20150814

希望正则之后的结果为:

cap_goods_201111
cap_goods_201201
cap_goods_20130429
cap_goods_20150814

论坛徽章:
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-01-16 12:22 |只看该作者
猜一下:
  1. $ awk -F_ '!t;t&&length(t)!=length($NF){print s"\n"$0}{s=$0;t=$NF}END{print s}' i
  2. cap_goods_201111
  3. cap_goods_201201
  4. cap_goods_20130429
  5. cap_goods_20150814
复制代码

论坛徽章:
0
16 [报告]
发表于 2014-01-16 12:45 |只看该作者
回复 15# yestreenstars

虔诚感谢,貌似可以用,我再测试一下,可以解释依稀,我理解了一下,没看懂!


   

论坛徽章:
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
17 [报告]
发表于 2014-01-16 13:39 |只看该作者
回复 16# fengfeng919
我把它分成几步来讲解吧。
  1. !t 在t未初始化时打印当前行的内容
  2. t&&length(t)!=length($NF){print s"\n"$0} 当t的值存在且t的长度不等于当前行的最后一个字段的长度时,打印上一行的内容和当前行的内容
  3. {s=$0;t=$NF} 将当前行的内容赋值给s,最后一个字段赋值给t
  4. END{print s} 打印最后一行的内容
复制代码


   

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
18 [报告]
发表于 2014-01-18 23:52 |只看该作者
  1. awk -F_ '{s=$0;nf=$NF;sub(/[0-9]+$/,"",s);print nf,s,$0}' file | sort -k2,2 -k1n | awk '{print $3}' | awk -F_ -v sep="-----------" '{s=$0;lnf=length($NF);--NF;}s~/[0-9]$/{if(t!=$0||len!=lnf){print l?l"\n"sep"\n"s:s}t=$0;l=s;len=lnf}END{if(s~/[0-9]$/)print s}'
复制代码
回复 14# fengfeng919


   

论坛徽章:
0
19 [报告]
发表于 2014-01-21 11:21 |只看该作者
回复 12# ly5066113


tim哥,感谢前几天的帮忙,你改进的那个『awk -F_ '!t;t&&length(t)!=length($NF){print s"\n"$0}{s=$0;t=$NF}END{print s}'』可以正常使用,但是有个小变化,就是前缀是一样,但是同时有年月格式还有年月日的时间格式,如下:
cap_goods_201111
cap_goods_201112
cap_goods_201204
cap_goods_20130429
cap_goods_20141229
cap_goods_20150814

希望正则之后的结果为:

cap_goods_201111
cap_goods_201204
cap_goods_20130429
cap_goods_20150814


   

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
20 [报告]
发表于 2014-01-21 14:58 |只看该作者
回复 19# fengfeng919


你的这个代码是 yestreenstars 的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP