免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk 可以完成筛选合并吗?? [复制链接]

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

不知道awk可以将一个文件的指定列相同的行合在一起吗??希望给位前辈多多帮忙谢谢啦。
将第二列相同的行输出
原数据的部分格式如下:
001 20160101 222 333 890
001 20160102 123 434 546
001 20160103 555 666 777
002 20160101 000 353 122
002 20160102 098 808 112
002 20160103 213 889 110
003 20160101 213 889 110
003 20160102 333 876 911
003 20160103 213 889 222
。。。。。。。。。
。。。。。。。。
。。。。。。。。
处理后期望的结果如下:
001 20160101 222 333 890
002 20160101 000 353 122
003 20160101 213 889 110
001 20160102 123 434 546
002 20160102 098 808 112
003 20160102 333 876 911
001 20160103 555 666 777
002 20160103 213 889 110
003 20160103 213 889 222

之后对每一列求和输出这些列的和就像下面的
1 2 3
3 4 5
经过计算输出
4 6 8 这种


谢谢大家啦~




论坛徽章:
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
2 [报告]
发表于 2016-12-07 17:22 |只看该作者

  1. sort -k2n file
复制代码

?

论坛徽章:
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-12-07 17:24 |只看该作者

  1. awk '{a[$2]=a[$2]?a[$2] RS $0:$0}END{for(i in a)print a[i]}'  file
复制代码

论坛徽章:
0
4 [报告]
发表于 2016-12-07 17:25 |只看该作者
回复 2# moperyblue 谢谢前辈指导 这麽简单完成 谢谢


论坛徽章:
0
5 [报告]
发表于 2016-12-07 17:34 |只看该作者
回复 3# moperyblue

谢谢前辈的指导 thanks~

论坛徽章:
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
6 [报告]
发表于 2016-12-07 17:41 |只看该作者
  1. perl -ane '{push(@{$h{$F[1]}},$_)}END{print @{$h{$_}} for sort keys %h}' f
复制代码

论坛徽章:
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
7 [报告]
发表于 2016-12-07 17:48 |只看该作者

第一列也要合并求和? 希望的结果能说一下吗?

论坛徽章:
0
8 [报告]
发表于 2016-12-07 18:00 |只看该作者
本帖最后由 learnllehs 于 2016-12-07 18:04 编辑

回复 7# moperyblue

多谢前辈,不用前两列我都会删除,只要对那些数据处理就好,您可以直接处理如下
--------------------------
1 2 3
3 4 5
经过计算能够输出如下就可以了
输出
4 6 8
-------------------------------
我只知道单独求每一列的和,不太会写求所有的 谢谢您的帮助 thanks~






论坛徽章:
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
9 [报告]
发表于 2016-12-07 18:09 |只看该作者
能说一下这个求和的条件吗, 实在没有看懂你给出的结果是如何计算出来的. 谢谢.

论坛徽章:
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
10 [报告]
发表于 2016-12-07 18:18 |只看该作者

  1. awk '{for(i=3;i<=NF;i++)a[i]=length(a[i])?a[i]+$i:$i}END{for(i=3;i<=NF;i++)printf a[i] (i<NF?FS:RS)}'
复制代码

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP