dポイントプレゼントキャンペーン実施中!

No.1<>あいうえお<>4
No.2<>かきくけこ<>1
No.3<>さしすせそ<>3
No.4<>たちつてと<>2

上のようなテキストファイルを下のよう並べかえるにはどうすればいいのでしょうか?

No.2<>かきくけこ<>1
No.4<>たちつてと<>2
No.3<>さしすせそ<>3
No.1<>あいうえお<>4


つまり一番右の数字でソートする(?)ような感じです。(すいません、うまくいえません・・・)

A 回答 (2件)

#1の方と同じシュワルツ変換ですが


コマンドラインからはされないですよね?(^^;;

#表示する場合
open(TEST, テキストファイル);
print map {$_->[0]} sort {$a->[3] <=> $b->[3]} map {[$_, split /<>/]} <TEST>;
close(TEST);

#配列に入れる場合
open(TEST, テキストファイル);
@List = map {$_->[0]} sort {$a->[3] <=> $b->[3]} map {[$_, split /<>/]} <TEST>;
close(TEST);

あとUNIX系環境なら

#表示する場合
system("sort -t '>' -n -k 3,3 テキストファイル);
#配列に入れる場合
@List = `sort -t '>' -n -k 3,3 テキストファイル`;

という手もありますが、ソースを見た人の
笑いを取れるというくらいしか効果がありません(苦笑)
    • good
    • 0
この回答へのお礼

いろいろと詳しくありがとうございました。

お礼日時:2005/09/27 23:05

1行で書くとこんな感じ:



perl -e 'print map{$_->[0]}sort{$a->[1]<=>$b->[1]}map{[$_,(split("<>",$_))[2]]}<>' テキストファイル

いわゆるシュワルツ変換ですが。

参考URL:http://en.wikipedia.org/wiki/Schwartzian_transform
    • good
    • 0
この回答へのお礼

解決しました!
ありがとうございました。。。

お礼日時:2005/09/27 23:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!