- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perlでのテキスト変換方法に関して)
Perlでのテキスト変換方法に関して
このQ&Aのポイント
- Perlを使用してテキストファイルの行を変換する方法について教えてください。
- 行の先頭の文字列が完全に一致する行が複数ある場合、2番目の文字列の値が小さい方の行を出力しない方法を教えてください。
- sortを使用して行のソートを考えましたが、それ以降の処理方法がわかりません。Perlでの処理方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ソートには「シュウォーツ変換」と呼ばれるやり方があります。ネット上にはたくさんの情報がありますので参照してください。次のプログラムは、1行に1処理で書いています。 use strict; my @data; push @data, [$_, $., split /\s+/] while <DATA>; @data = sort { $a->[2] cmp $b->[2] or $b->[3] <=> $a->[3] } @data; @data = @data[0, grep { $data[$_ - 1]->[2] ne $data[$_]->[2] } 1 .. $#data]; @data = sort { $a->[1] <=> $b->[1] } @data; @data = map { $_->[0] } @data; print @data; __DATA__ aaa 8000 52 abc 200 48 cbd 250 31 efg 98 45 abc 390 68 ddd 89 90 aaa 65 40 fed 900 66 efgh 99 49 abc 40 40
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
1つの例: とりあえず最初の欄の文字列をキーにするハッシュを作る. その結果を, 今度は行番号をキーにするハッシュに入れて print.
お礼
ありがとうございます。 試してみたところ所望の結果が得られました。 非常に助かりました。