ファイルから特定の部分をキーにしてsortしたい!

このQ&Aのポイント
  • 現在、あるCGIを作成しています。ID<>yyyy/mm/dd<>Count<>***<>Adress<>+++<>@@<>.com<>一行が上記の構成になっているファイルを読み込んで、ブラウザに表示させるCGIなのですが、Countの部分をキーにしてsortし昇順で表示させたいです。
  • 現在、ファイルから特定の部分をキーにしてsortするCGIを作成しています。ファイルはID<>yyyy/mm/dd<>Count<>***<>Adress<>+++<>@@<>.com<>という構成で、一行ずつ読み込んでブラウザに表示させる仕組みです。Countの部分をキーにして昇順で表示させたいのです。
  • 現在、ファイルの特定の部分をキーにしてsortするCGIを作成しています。ファイルはID<>yyyy/mm/dd<>Count<>***<>Adress<>+++<>@@<>.com<>という形式で構成されており、一行ずつ読み込んでブラウザに表示します。Countの部分をキーにして昇順で表示させたいです。
回答を見る
  • ベストアンサー

ファイルから特定の部分をキーにして sort したい!

皆様、お知恵を貸してください。 現在、あるCGIを作成しています。 ID<>yyyy/mm/dd<>Count<>***<>Adress<>+++<>@@<>.com<> 一行が上記の構成になっているファイルを読み込んで、ブラウザに表示させるCGIなのですが、Count の部分をキーにして sort し昇順で表示させたいのです。 現在は、ファイルの上から一行ずつ読み込んで、 ・ID:hogehoge ・yyyy/mm/dd:yyyy/mm/dd ・Count:Count のように表示するところまで出来てます。 この3行を1セットにし Count をキーに表示させたいのです。 宜しく御願い致します<(_ _)>

  • Javac
  • お礼率52% (13/25)
  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

次のスクリプトでソートできます。 @data = sort { (split(/<>/,$a))[2] <=> (split(/<>/,$b))[2] } @data; 分からなければ補足してください。

Javac
質問者

お礼

@Lines = sort { (split(/<>/,$b))[2] <=> (split(/<>/,$a))[2] } <FILE>; で出来ました。

Javac
質問者

補足

有難うございます。 試してみたら出来ました。 でも、私の質問ミスなのですが、実は昇順ではなく、降順でソートしたいのです…。 この場合はどうするのでしょうか?

関連するQ&A

  • GROUP BY使用時のソートについて

    OracleSqlにて「GROUP BY」使用した日付のデータを取得するSql文を作成したのですが、 「ORDER by」句に「DESC」を付けても降順ソートが行えません。 作成したSql文は以下の通りなのですがなぜ降順ソートが行えないのでしょうか? 「GROUP BY」を使用するとソート出来ないと言うことなのでしょうか? それとも日付型なのでソートが出来ないと言うことなのでしょうか? どなたかご存知の方おりましたらご教授下さい。 ------------------------------------------------- SELECT TO_CHAR(RECORDDATE,'YYYY/MM/DD') ,RECORDYEAR ,RECORDMONTH ,RECORDDAY FROM STOCKTBL WHERE TO_CHAR(RECORDDATE,'YYYY/MM/DD')<='2002/03/07' AND TO_CHAR(RECORDDATE,'YYYY/MM/DD')>='2002/02/22' GROUP BY TO_CHAR(RECORDDATE,'YYYY/MM/DD') ,RECORDYEAR ,RECORDMONTH ,RECORDDAY ORDER by TO_CHAR(RECORDDATE,'YYYY/MM/DD') ,RECORDYEAR ,RECORDMONTH ,RECORDDAY DESC -------------------------------------------------

  • 【JavaScript配列のソート】2つのキーで

    JavaScriptのsort()を使用して次の並べ替えをしたいと思っています。 key1, key2, data, data 5/5 , 5/4 , リンゴ, 110 5/3 , 5/6 , バナナ, 130 5/7 , 5/2 , ミカン, 110 5/3 , 5/2 , イチゴ, 150 この配列をkey1を昇順でかつkey2も昇順とし並び変えたいのです。 key1, key2, data, data 5/3 , 5/2 , イチゴ, 150 5/3 , 5/6 , バナナ, 130 5/5 , 5/4 , リンゴ, 110 5/7 , 5/2 , ミカン, 110 str.sort(); これだとkey1のみでソートされてしまいますので、条件を複数指定したいのですがいい方法はないでしょうか? 結果はweb(テーブル等)に表示するのではなく、配列変数のままで獲得したいと思っています。 google apps のスプレッドシート内でスクリプトとして使用したいと思っています。 かなり調べたのですがどれも1項目(key1)のみの検索しかヒットしませんでした。 よろしくお願いします。

  • ソートについて

    同様の回答があったら申し訳ありません。 現在CGIにてリストを作成しています。現状、書いた順番によってリストが作成されていますが、書き込まれたファイルのある1フィールドで昇順にソートさせたいのですが、うまくいきません。 ファイルレイアウト(例)↓ ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17) 上記のようなレイアウトのファイルで、「$9」>「$10」(?)の条件(第一条件が$9、第二条件が$10です)でソートさせる場合、どの様なコマンドを書けば良いのでしょうか?

    • ベストアンサー
    • CGI
  • ファイルを開く等のダイアログのソート順

    各アプリの「ファイルを開く」等を選択するとダイアログが現れ、ファイルの一覧を表示 しますが、このソート順はデフォルトでは「ファイル名」の昇順になっているかと思い ます。 最近何の操作をしたのかわかりませんが、更新日時の降順になってしまいました。 詳細で表示してファイル名昇順ソートした後にファイルを選択したりキャンセルしても 直りません。 不便なので、ファイル名昇順で表示されるように戻すことはできないでしょうか?

  • csvファイル内にてソートする方法

    ご協力お願いします。 あるログデータを取得したcsvファイルを作成しました。しかし、データ量も多く見やすいようにソートをかけたいのですが方法がわかりません。csvファイルの中身は以下のようになっています。 ___________________________ | 端末ID | ユーザーID | 日付 | 時間 | ――――――――――――――――――――――――― | ITD002 | 00000001 |2005/08/22| 11:00 | ――――――――――――――――――――――――― | ITD002 | 00000003 |2005/08/22| 21:00 | ――――――――――――――――――――――――― | ITD001 | 00000001 |2005/08/22| 12:00 | ――――――――――――――――――――――――― | ITD001 | 00000002 |2005/08/22| 18:20 | ――――――――――――――――――――――――― 以上のような中身になっています。レコード量は、もっと多いです。このランダムな順番に取得したレコードを 端末ID(昇順)ユーザーID(昇順)日付(降順)時間(降順)でソートする方法をご教授お願いします。

  • 多次元配列でソートしたい

    たとえば、Yahooオークションとかで、「商品名」「価格」「残り日数」が表示されていて、 それぞれをクリックすると、その列をソートして全体を昇順・降順に並べ替えてくれますよね。 あれを自前のCGIで実現したいのです。 たとえば、3次元配列$hoge[X][Y][Z]を定義し、ここがクリックされたらXをキーにソート、ここがクリックされたらYでソートということをやりたいと思っているのですが、当然こういう機能は無いわけで、自分で作らなくてはいけません。 連想配列とかポインタとか色々考えたのですが、うまく行かず・・・。 どのような実装方法があるでしょうか、アイデアをお聞かせ願えたら嬉しいです。

    • ベストアンサー
    • Perl
  • CSVファイル

    質問の説明がうまくなくてごめんなさい。 エクセル作成したデータをCSVファイルで保存をしたのですが、メモ帳などで見るとそのときはいいのですが もう一度作成したエクセルと開くと日付入力をyyyy.mm.dd→yy.mm.ddに変更して保存をしたのですが yyyy.mm.ddになったままです。なぜなのでしょうか? よろしくお願いします。

  • csvファイルの読込みとソート

    いつも大変参考にさせていただいております。 csvファイルの読み込みとソートをしたく、ネットや過去ログ等を相当調べたのですが、完全に詰まってしまいました。 (検索キーワード:「php csv ソート」「php 二次元配列 ソート」など) とても困っています。どなたかよろしくお願いします。 以下のようなcsvファイルを読み込みソートしたいのです。 ■csvファイル 20110803, A, りんご 20111215, B, みかん 20110306, A, みかん 20110620, A, りんご 20110215, B, りんご ■個別にやりたい処理 (1)、左列の日付で昇順ソートしてすべて表示 (2)、「A」を含む行をすべて表示(日付順) (3)、「A」+「りんご」を含む行をすべて表示(日付順) □補足 csvをfgetcsvで読み込み、テーブルに入れて表示するところまではできました。 csvの行は増えていきます(max100行位)。列は固定。

    • ベストアンサー
    • PHP
  • UsedRangeを使ってソートすることは可能?

    UsedRangeを使ってソートすることは可能ですか? エクセルですが 学年  組  出席番号 2    A    1 1    B    2 と言うデータがあり、 これにフィルタをかけつつ、A列で昇順に並び替えるVBAを作ってるのですが Sub さんぷる() オートフィルタをかける Range(Cells(1, 1), Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column)).AutoFilter UsedRange.Sort Key1:=Cells(1, 1), order1:=xlAscending End Sub とすると、 UsedRangeでコンパイルエラーになるのですが どうすればよろしいでしょうか?

  • VBA ファイルを読み込む際のSortメソッドの使い方

    tabで区切られたテキストファイルを読み込み、日時の列を昇順で並び替える処理をしようとしました。 sortメソッドを使って並び変えようとしましたが、上手くいきません。。 既に開いているエクセル上では簡単なsortメソッドを使って並び替えはできました。↓のようなマクロ記録を使って。 Range("A1:A11").Select Range("A1:C11").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:= xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin,DataOption1:=xlSortNormal ファイルを読み込んで、sortメソッドを使うには何か特別な方法があるのでしょうか?どなたか教えて下さい。よろしくお願いします。

専門家に質問してみよう