+ -
当前位置:首页 → 问答吧 → 文本处理

文本处理

时间:2010-11-10

来源:互联网

1 aaa
1 asdf
1 dsafdsa
2 adsf
2 frgfd
2 grsdfg
2 fdsdsaf
3 adfads
3 adsfads
3 23rew

要下面的结果

1 aaa asdf dsafdsa
2 adsf frgfd grsdfg fdsdsaf
3 adfads adsfads 23rew

作者: wtuter   发布时间: 2010-11-10

  1. use strict;
  2. use warnings;

  3. my $cnt = 0;

  4. while (<>) {
  5.     chomp;
  6.     /^(\d+)\s+(.*)$/;
  7.     if ($1 == $cnt) {
  8.         print " $2";
  9.     } else {
  10.         print "\n$1 $2";
  11.         $cnt = $1;
  12.     }
  13. }
复制代码

作者: zhlong8   发布时间: 2010-11-10

  1. use strict;
  2. my %hItem;

  3. while(<DATA>){
  4.   if(m/(\d+)\s+(\S+)/){
  5.     $hItem{$1} .= " $2";
  6.   }
  7. }
  8. foreach(sort keys %hItem){
  9.   print "$_$hItem{$_}\n";
  10. }
  11. __DATA__
  12. 1 aaa
  13. 1 asdf
  14. 1 dsafdsa
  15. 2 adsf
  16. 2 frgfd
  17. 2 grsdfg
  18. 2 fdsdsaf
  19. 3 adfads
  20. 3 adsfads
  21. 3 23rew
复制代码

作者: jason680   发布时间: 2010-11-10

[oracle@imeg02 zgw]$ perl -anle '{push @{$hash{$F[0]}},$F[1]}END{print "$_ @{$hash{$_}}" foreach (sort {$a<=>$b} keys %hash)} ' file
1 aaa asdf dsafdsa
2 adsf frgfd grsdfg fdsdsaf
3 adfads adsfads 23rew

作者: 99超人   发布时间: 2010-11-10

回复 jason680


    哈希加正则 哈

作者: liyangole   发布时间: 2010-11-10