2013-09-28 2 views
1

Perl을 사용하여 텍스트 파일 내에서 다음 가격 열을 정렬하려고합니다.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 

나는 배열에 텍스트 파일을 읽고 행에 의해 미세을 분류하지만 내림차순 또는 오름차순 에서 특정 열을 정렬하는 방법을 생각할 수 없다 할 수 있습니까? 일종의 "로 시작하고

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(' '); 
} 
+0

는 뜻의"열을 정렬 "마십시오 내림차순의 첫 번째 Price 열을 정렬하려고, 또는 다음과 같이 한 번에 텍스트 파일에 하나 개의 요소를 읽고 시도 행 * by * 열 "? – AmbroseChapel

+0

열을 정렬하려고 시도했습니다 – user2795662

답변

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; 
+0

고마워이게 나를 위해 일했습니다 – user2795662

+0

표시된 for 루프를 사용하여 @rows의 내용을 인쇄하려고하면 for (my $ i = 0; $ i <= $ # rows; $ i ++) { \t 인쇄 $ 행 [$ i]. "\엔"; \t} - 메모리 위치 ARRAY (0x966bac)가 나타납니다. 실제 값을 얻는 방법을 알고 있습니까? – user2795662

+0

도움 주셔서 감사합니다. – user2795662

관련 문제