1

Perl を使用して、テキスト ファイル内の次の価格列を並べ替えようとしています。

Time    Num    Size     Price Act | Act Price   Size    Num       Time  
11:30:12.957    1   3000 11.90  A  |  A  11.05   500     1      11:30:12.954   
11:30:12.957    1   100  11.75  A  |  A  14.00   1676    3      11:30:12.957

テキスト ファイルを配列に読み込んで行ごとに並べ替えることができますが、特定の列を昇順または降順で並べ替える方法が思いつきません。Price最初に次のように一度に 1 つの要素をテキスト ファイルに読み込んでから、最初の列を降順で並べ替えようとしました

use strict;
use warnings;

open(my $file_handle, '<', 'Data.txt') or die("Error: File cannot be opend:  $!");

my @words;

while (<$file_handle>) {
chomp;
@words = split(' ');
}
4

1 に答える 1

2
use strict;
use warnings;

open(my $file_handle, '<', 'Data.txt') or die("Error: File cannot be opend:  $!");

my @rows;

while (<$file_handle>) {
  $. > 1 or next; # skip header line
  chomp;
  push @rows, [ split ]; # split current line on \s+ 
}

# sort descending on 4-th column
@rows = sort { $b->[3] <=> $a->[3] } @rows;

# ascending sort on same column
# @rows = sort { $a->[3] <=> $b->[3] } @rows;
于 2013-09-28T16:32:50.230 に答える