- 论坛徽章:
- 2
|
- 贴下我写的吧,供参考~
- awk4.0+
- awk 'NR==1{print;next}{t=0;for(i=1;i<=NF;i++){if(!t){if($i!="-"){a[i][$i]=a[i][$i]?a[i][$i] RS $0: $0;if(!u[i" "$i]++)b[i]=b[i]?b[i] " "$i:$i;t=1}}}}END{for(i=1;i<=NF;i++){split(b[i],c," ");for(j=1;j<=asort(c,d);j++){print a[i][d[j]]}}}'
- perl
- #!/usr/bin/env perl
- use strict;
- my @data;
- open(fh,"file") or die "$!\n";
- while(<fh>){
- chomp;
- my $index;
- my @line = split;
- map{if($line[$_]=~/\d/ && ! defined $index){$index=$_}}(0..$#line);
- push @data,[$index,@line];
- }
- close(fh);
- map{
- print join " ",@{$_}[1..$#$_];
- print "\n";
- }sort{
- $a->[0] <=> $b->[0] ||
- $a->[$a->[0]+1] <=> $b->[$b->[0]+1]
- }@data;
复制代码 |
|