• ベストアンサー

ファイルの行の並びかえ

No.1<>あいうえお<>4 No.2<>かきくけこ<>1 No.3<>さしすせそ<>3 No.4<>たちつてと<>2 上のようなテキストファイルを下のよう並べかえるにはどうすればいいのでしょうか? No.2<>かきくけこ<>1 No.4<>たちつてと<>2 No.3<>さしすせそ<>3 No.1<>あいうえお<>4 つまり一番右の数字でソートする(?)ような感じです。(すいません、うまくいえません・・・)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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 テキストファイル`; という手もありますが、ソースを見た人の 笑いを取れるというくらいしか効果がありません(苦笑)

yuuji159
質問者

お礼

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

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

1行で書くとこんな感じ: perl -e 'print map{$_->[0]}sort{$a->[1]<=>$b->[1]}map{[$_,(split("<>",$_))[2]]}<>' テキストファイル いわゆるシュワルツ変換ですが。

参考URL:
http://en.wikipedia.org/wiki/Schwartzian_transform
yuuji159
質問者

お礼

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

関連するQ&A