排序文件:
1.txt:
@12@vip.com#20120307/1
BCDBCDBD
+
AAAAAAAA
@18@vip.com#20120307/1
BBDACCDA
+
AAAAAAAA
...
2.txt
@14@vip.com#20120307/1
AABCCCCD
+
AAAAAAAA
@12@vip.com#20120307/1
BCACACAD
+
AAAAAAAA
...
————————————————
结果:
@14@vip.com#20120307/1
AABCCCCD
+
AAAAAAAA
@18@vip.com#20120307/1
BBDACCDA
+
AAAAAAAA
@12@vip.com#20120307/1
BCACACAD
+
AAAAAAAA
@18@vip.com#20120307/1
BBDACCDA
+
AAAAAAAA
。。。。。
----------------------------------
1: 文件分块:
按照每部分的第二行, 前3个字符分块
BCDBCDBD -> B文件
CACACAD -> C文件
AABCCCCD -> A文件
......
2: 排序
排序 A文件
排序 B文件
排序 C文件
......
按照每部分的第二行, 前3个字符分块
BCDBCDBD -> B文件
CACACAD -> C文件
AABCCCCD -> A文件
......
2: 排序
排序 A文件
排序 B文件
排序 C文件
......
-----------------------------------------------------------
----------------------------------------------------------- #!/usr/bin/perl my $head = 5; # 或多或少 my %file; @ARGV = qw/test.txt/; while (<>) { my $line2 = <>; my $key = substr $line2, 0, $head; unless ( $file{$key} ) { open my $f, '>', "/tmp/$key"; $file{$key} = $f; } print { $file{$key} } $_, $line2, <>.<>; } close $file{$_} for keys %file; open my $result, '>', 'result'; for my $file ( sort keys %file ) { @ARGV = "/tmp/$file"; my @group; push @group, [ $_, ~~<>, <>.<> ] while <>; print $result @$_ for sort { $a->[1] cmp $b->[1] } @group; unlink "/tmp/$file"; } print scalar keys %file, ' files: BYE!'; ——————————————————————————————————————————————
xargs -n4 < infile |sort -k2 |xargs -n1