如果我在Perl這樣做,我會在思樂普整個文件和Munge時間就這樣我就可以根據自己的序列號的原生線排序。我不知道你的文件格式是多麼一致,但一個perl方法可能是:
#!/usr/bin/perl -w
my @data;
# slurp in each line, and tag it by its sequence number
foreach my $line (<STDIN>)
{
if ($line =~ /sequence=(\S+)/)
{
push @data, { sequence => $1, line => $line };
} else
{
die "unhandled line: $line"; # only if needed
}
}
# sort the lines by their sequence number into @sorted
my @sorted = sort { $a->{sequence} <=> $b->{sequence} } @data;
# generate the final result by extracting the original lines
# from the sorted array and concatenating them
my $result = join("", map { $_->{line} } @sorted);
# output the sorted result
print $result;
我試過這個在你上面的例子,它做了詭計。如果腳本可以安全地忽略輸入中的「垃圾」行,則可以按die
行。
此外,如果需要升序和降序排列順序之間切換,你可以在這行交換$a
和$b
:
my @sorted = sort { $a->{sequence} <=> $b->{sequence} } @data;
如果序列號不純粹是數字,或要比較他們作爲字符串,改變<=>
運營商cmp
:
my @sorted = sort { $a->{sequence} cmp $b->{sequence} } @data;
感謝,去除分模線,但做的把戲我。乾杯! – brercia