- ベストアンサー
ファイルの行の並びかえ
No.1<>あいうえお<>4 No.2<>かきくけこ<>1 No.3<>さしすせそ<>3 No.4<>たちつてと<>2 上のようなテキストファイルを下のよう並べかえるにはどうすればいいのでしょうか? No.2<>かきくけこ<>1 No.4<>たちつてと<>2 No.3<>さしすせそ<>3 No.1<>あいうえお<>4 つまり一番右の数字でソートする(?)ような感じです。(すいません、うまくいえません・・・)
- みんなの回答 (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 テキストファイル`; という手もありますが、ソースを見た人の 笑いを取れるというくらいしか効果がありません(苦笑)
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
1行で書くとこんな感じ: perl -e 'print map{$_->[0]}sort{$a->[1]<=>$b->[1]}map{[$_,(split("<>",$_))[2]]}<>' テキストファイル いわゆるシュワルツ変換ですが。
お礼
解決しました! ありがとうございました。。。
お礼
いろいろと詳しくありがとうございました。