• ベストアンサー

csvファイルのソート

perlで、csvファイルをある項目でソートした結果を表示したいのですが(つまりエクセルで並び替えをするようなこと)、ハッシュ配列等を使用しないとできないのでしょうか? 項目(列)は10項目くらいあります。

  • mune
  • お礼率13% (21/151)
  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • arlie
  • ベストアンサー率100% (2/2)
回答No.1

下記のサイトにヒントがありますよ!

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm
mune
質問者

お礼

ありがとうございます。 いろいろ試したところ、数字でのソートはできたのですが、半角アルファベット、全角ひらがな(漢字)のソートができませんでした・・・・ できないものなのでしょうか。

mune
質問者

補足

あたふたしてすみません!!自分で突っ込みいれます。 日本語等でもできました。

関連するQ&A

  • 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
  • CSVファイルのエクスポートでソートしたい

    ACCESS VBAで DoCmd.TransferText acExportDelim, , "テーブル名", CSV_File_Full_Path でCSVファイルのエクスポートを行っていますが、 エクスポートするテーブルの任意の複数項目でソートして出力する方法はあるのでしょうか? 現在はテーブルの表示順と異なった出力がされています。

  • perlで大容量CSVのsort方法について

    perlで大容量CSVのsort方法について perlでcsvファイル100MB超のファイルをソートしたいと思ってますが、以下の方法でメモリーの関係上(と思ってます。)できません。 ソートを行う方法がありますでしょうか? 件数も11万件あるので、エクセルでソートしてからの受け渡しが出来ずに悩んでます。 (ここから) #sortロジック sub sort { use warnings; use feature ':5.10'; open my $ifh, '<', $inport or &error("Can't open $inport"); my @lines = <$ifh>; close $ifh; print @lines, "\n"; #csvファイル何番目? my @sorted = map { $_->[0] } sort { $b->[0] <=> $a->[0]} map { [(split q{,}, $_)[0], $_] } @lines; @lines = @sorted; exit; } (ここまで) いつも貴重なアドバイスをありがとうございます。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 2次元配列CSVのソート

    2次元配列で次のCSVファイルがあります。 フォームから入力したのですが、txtファイルには項目名(列名)が保存されていません。 taro,10,119 jiro,10,90 hanako,9,120 momoko,11,98 saburo,12,111 natuyo,10,130 sirou,8,88 このデータを年齢順、及び身長順に並べ替えをしたいのです。 列の名前がないので、手動でtxtファイル1行目に simei,toshi,shinchou と追記して 01: <?php 02: $data = "c:\××\××\shinchou.txt"; 03: $array = file($data); 04: foreach($array as $key => $row){ 05: $toshi[$key] = $row["toshi"]; 06: $shinchou[$key] = $row["shinchou "]; 07: } 08: print_r($array); 09: array_multisort($toshi,SORT_ASC, $shinchou,SORT_ASC, $array); 10: ?> と実行しましたが、 Array ( [0] => simei,toshi,shinchou  [1] => taro,10,119 ・・・・と、print_r($array)の結果が出るだけで、ソートが出来ません。 CSVファイルで項目名(列名)が無い場合の並べ替えはどのようにすれば良いでしょうか。 mySQLなどを利用しないと並べ替えは出来ないでしょうか。

    • ベストアンサー
    • PHP
  • CSVファイルの取り込みについて

    CSV取り込み方法について 教えていただきたくお願いいたします。 エクセルのマクロ・VBAの組み方について デスクトップ上の000という名前のCSVファイルを、作業しているエクセルファイルのLoadという名前のシートに貼り付けたいと思っています。 CSVファイルはエクセルで開くと1行に11列の項目が展開されています。 貼り付ける項目はこのようになります。 (CSV) →(エクセルのLoadシート) 1列目(A行)→B行へ 2列目   →C行へ 3列目   →D行へ 4列目   →E行へ 5列目   →F行へ 9列目   →G行へ 10列目  →H行へ 11列目  →I行へ (6.7.8列目は使いません) 最後にLoadのシートのA行に”=B&E”とい式を入力したいと思っています。 まだ初心者なので勉強中なのですが、仕事上急遽必要になりましたのでお願いいたします。

  • excelでのソートについて

    ソートをしようと考えています。 通常のソートではなく、2行目以降をソートすることは可能でしょうか? (1行目は「項目」が入っているので。。。) さらに、この処理ができると仮定して、 csvファイルを読込んだ直後に自動的にソートできるでしょうか? 平たく説明すると。。。 1クリックで自動的に決められた所に格納されている csvファイルをエクセルに読込んで、2行目以降を 自動的にソートできないか?ということなのですが。 宜しくお願いします。

  • CSVファイルの扱い

    教えてください。 CSVファイルをExcelで開く時の問題点です。CSVファイルの中に「00050」と言うような文字列が存在しています。ところがExcelでこれを開くと数値と認識してしまい、「50」と表示されてしまいます。これをExcelのセルのプロパティ等でセルの書式を文字列としても既にExcelにインポートされてしまったデータは「50」としか表示がされません。 「00050」として表示するための何か方法はないのでしょうか? みなさんよろしくお願いします。

  • CSVから読み込んだデータの保持とソート

    お世話になっています。VB.NET+CSVに関する質問です。 現在VB.NETで、CSVから読み込んだレコードをある項目を基準に並び替え、一覧にして画面に表示するというプログラムを作っています。 こういう場合のCSVから読み込んだデータの保持の方法と、その並び替えの方法にはどういうやり方がありますか? いくつかのパターンがあると思いますが、教えてください。 以下はCSVの情報です。 ・1行が1件のレコード ・項目1を昇順で並び替える ・CSV項目:項目1(半角英数字)項目2(タブ)項目3(半角・全角文字) ・CSV件数:1000行以下

  • とても大きなCSVファイルをEXCELで見たい。

    今、手元にとても大きなサイズのCSVファイルがあります。 そのファイルは、行は1800行なのですが、列は256行以上あり何列あるかわかりません。 EXECL2000で開くと全ては開けなかったと表示されてしまいます。 なんとか、EXCELでこのファイルを見ることはできないでしょうか? または、CSVファイルの列を分割できるようなソフトを ご存知ないでしょうか? よろしくお願いします。

  • wshでcsvファイルのソートを行いたい

    wshのプログラムで困っているため教えてください。 wshでcsv(カンマ区切り)のファイルのソートを行い、Escel形式で保存するプログラムを書いています。 調べてみたところ、wshではソート関数がないようで、 adodbのsort関数を使用して対処しようとしていますが、どうもうまくいきません。 (※adodbの必要はないのですが、ExcelVBAのsortのコードを書こうとするとエラーになってしまったので、adodbにしています。) <仕様> csvファイルのソートのキーになるのは、「判定区分」の値で昇順に行いたいです。 csvファイルの一行目は、カラム名としてソート対象にはなりません。 読み込んだcsvファイルをexcel形式に保存したいです。 ■csvファイルの形式は、以下のような形です。 性別,年代,判定区分,生年月日,日付 女性,10,0,2010/01/10,2013/7/7 23:57 男性,50,2,2000/03/30,2013/7/7 13:7 女性,10,0,1990/01/20,2013/7/7 15:22 女性,20,1,2001/12/10,2013/7/7 8:10 *----------------------------------- <ソース> Set con = CreateObject("ADODB.Connection") With con .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";" _ & "Extended Properties='text;HDR=Yes;FMT=Delimited'" .Open End With Set rec = CreateObject("ADODB.Recordset") rec.Open "select * from " & csvfile & " order by 判定区分", con *----------------------------------- うまくいかないため ↓でも書いています。 *----------------------------------- Const adDate = 7 Const adVarChar = 200 Dim ans Set objADO = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") Set re = CreateObject("VBScript.RegExp") rs.Fields.Append "性別", adVarChar, 255 rs.Fields.Append "年代", adVarChar, 255 rs.Fields.Append "判定区分", adVarChar, 255 rs.Fields.Append "生年月日", adDate rs.Fields.Append "日付", adDate rs.Open ans = "" rs.Sort ="判定区分 ASC" rs.MoveFirst Do While Not rs.EOF ans = ans & rs.Fields(0).Value & vbCrLf rs.MoveNext Loop MsgBox ans エラーになってしまいます。 ソート処理だけですでににっちもさっちもいかないため、教えていただきたいです。 どうぞ宜しくお願いいたします。

専門家に質問してみよう