免费注册 查看新帖 |

Chinaunix

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

一个很有难度的文件处理,同志们帮忙哈 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-11 13:49 |只看该作者 |倒序浏览
一个文件,如下:下载线前为名称,AB为类型
abc_A  56
abd_A 33
abc_B 34
ed_B 89
abd_B 44
ed_A 66
iof_A 57
...........
--------------------
怎样写命令处理使成两大列如:以名称做判断分行
abc_A  56 abc_B 34
abd_A 33 abd_B 44
ed_B 89 ed_A 66 (不用考虑A、B先后)
iof_A 57 (还有没区配的)
...........


好像很难的样子,有没达人指导下,先谢了!

[ 本帖最后由 yiyouzhou 于 2009-11-11 14:08 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-11-11 14:11 |只看该作者
awk -F_ '{a[$1]=(a[$1]?a[$1]" ":"")$0}END{for (j in a) print a[j]}' file

[ 本帖最后由 ywlscpl 于 2009-11-11 14:14 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
3 [报告]
发表于 2009-11-11 14:20 |只看该作者
看不懂。
  1. sort urfile|paste -sd '\t\n'
复制代码

论坛徽章:
0
4 [报告]
发表于 2009-11-11 14:29 |只看该作者
原帖由 ywlscpl 于 2009-11-11 14:11 发表
awk -F_ '{a[$1]=(a[$1]?a[$1]" ":"")$0}END{for (j in a) print a[j]}' file


嗯 可以的 谢谢了。
就是有点看不懂 呵

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
5 [报告]
发表于 2009-11-11 16:42 |只看该作者

回复 #4 yiyouzhou 的帖子

嗯~想法好~

论坛徽章:
0
6 [报告]
发表于 2009-11-11 17:07 |只看该作者
原帖由 ywlscpl 于 2009-11-11 14:11 发表
awk -F_ '{a[$1]=(a[$1]?a[$1]" ":"")$0}END{for (j in a) print a[j]}' file


说说思路?

论坛徽章:
0
7 [报告]
发表于 2009-11-11 17:48 |只看该作者

回复 #2 ywlscpl 的帖子

你的思路太开阔了吧。佩服佩服!

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
8 [报告]
发表于 2009-11-11 18:05 |只看该作者

回复 #7 liying_gg 的帖子

associative array 的基本用法啊。

论坛徽章:
0
9 [报告]
发表于 2009-11-11 22:20 |只看该作者
明白了,佩服

[ 本帖最后由 windpray 于 2009-11-11 22:31 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-11-12 12:33 |只看该作者

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. my %hash;
  5. while (<DATA>) {
  6.     chomp;
  7.     my @array = split /\_/;
  8.     push @{$hash{$array[0]}}, $array[1];
  9. }

  10. foreach (keys %hash) {
  11.     foreach my $elt (0 .. $#{$hash{$_}}) {
  12.         print "$_\_@{$hash{$_}}[$elt]\ \ \ ";
  13.     }
  14.     print "\n";
  15. }


  16. __DATA__
  17. abc_A  56
  18. abd_A 33
  19. abc_B 34
  20. ed_B 89
  21. abd_B 44
  22. ed_A 66
  23. iof_A 57
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP