+ -
当前位置:首页 → 问答吧 → 请教一个格式化的问题

请教一个格式化的问题

时间:2011-08-21

来源:互联网

几十兆的data文件:
>a
1 3 8
2 5 6
>b
1 2 3
>d
>c
2 3 6
5 6 7
8 6 3
……

预期结果:
>a 1 3 8
>a 2 5 6
>b 1 2 3
>d
>c 2 3 6
>c 5 6 7
>c 8 6 3
……

特征是两条记录之间有大于号>, 把两个大于号>之间的内容依次放到第一条记录之后,请问如何实现?
舍不得perl的菜鸟!谢谢!

作者: boya888   发布时间: 2011-08-21

Perl code

#!/usr/bin/env perl
use strict;
use warnings;

my $name = '  ';
my $count = 1;

while (<>) {
        chomp;
        if (/^>.$/) {
                print "$name\n" if $count == 0;
                $name = $_;
                $count = 0;
                next;
        }
        $count++;
        print "$name $_\n";
}

作者: mymtom   发布时间: 2011-08-21

mymtom大侠!
chomp + if(m/^>/)威力巨大!
结果有出入( ⊙ o ⊙ )啊!
>a 1 3 8 2 5 6
>b 1 2 3
>d
>c 2 3 6 5 6 7 8 6 3

作者: boya888   发布时间: 2011-08-21

引用 2 楼 boya888 的回复:

mymtom大侠!
chomp + if(m/^>/)威力巨大!
结果有出入( ⊙ o ⊙ )啊!
>a 1 3 8 2 5 6
>b 1 2 3
>d
>c 2 3 6 5 6 7 8 6 3


你希望的结果是顶楼的还是2楼的

作者: imeuyniy   发布时间: 2011-08-21

不好意思啊!
预期结果是顶楼的!
mymtom大侠赞助的结果是2楼的!
有些出入!谢谢先!

作者: boya888   发布时间: 2011-08-21

mymtom的结果就是顶楼的啊,我的运行结果:

>a 1 3 8
>a 2 5 6
>b 1 2 3
>d
>c 2 3 6
>c 5 6 7
>c 8 6 3

这样不对么?

作者: imeuyniy   发布时间: 2011-08-21

这种问题尽量独立完成吧。没任何难点。

作者: iambic   发布时间: 2011-08-21