• 締切済み

サイズの大きなテキストファイルのSORT

3GB超のテキストファイルをSORTコマンドでソートしたいのですが、空(0KB)の出力ファイルが出来て処理が終わってしまいます。 数KB~数MBのテキストでは正常にソートされるのですが、GB単位になると上記の現象が発生します。 環境はWindowsNTServer4.0です。 ソートできるファイルサイズの上限、ディスクの空き容量等、制限があるのでしょうか? また、上記の現象を回避し、正常にソートする方法をご存知な方がいらっしゃいましたら、どうぞご教授ください。 宜しくお願い致します。 ↓ソートコマンドは至ってシンプルです。 sort /+1 < TEST.dat > OUT.txt

みんなの回答

noname#65902
noname#65902
回答No.2

ANo.1 です。書き忘れてました。 SORT コマンドでは、扱うファイルにサイズ制限はない、 との事です。 http://www.microsoft.com/technet/prodtechnol/windowsserver2003/ja/library/ServerHelp/58617202-cd86-425c-99ac-0589c083e4af.mspx?mfr=true

shun10
質問者

お礼

1GB程度のファイルでソートを試したところ、「メモリが不足しています」というメッセージが 表示されて処理が落ちたので、結局はそれが原因だったようです。 代替策で回避することにしました。 ご回答いただきありがとうございました。

shun10
質問者

補足

早速のご回答ありがとうございます。 確かにソートが実行中であれば、出力ファイルはプロセスに掴まれているので削除できないはずなのですが、削除できてしまいます。 ただし、書き込み開始自体に時間が掛かっている可能性もありますので、ソートを実行してから時間を置いてみる、というのを試してみたいと思います。 参考URLありがとうございます。 ちなみにWindows2000で実行したら、同じ3GBのテキストファイルが正常にソートされました…。

noname#65902
noname#65902
回答No.1

回答になってないのですが。 遅延書き込みか何かで、コマンド自体は完了してても ファイル書き込みが完了してない...って可能性があるかなと 思いました。 3GBのファイルを扱うとなると、一時ファイルから書き戻すのも 結構時間かかると思われますし... もう少し待ってみるか、削除しようとすれば「使用中です」と警告されることで 判断できるように思いますが、いかがでしょうか。

関連するQ&A

  • powershellでのソート

    powershellでのソート処理に関して教えてください。 list.csv F1,F2,F3 file01.txt,c:\dirA,100kb file20.txt,c:\dirC,100kb file100.txt,c:\dirG,100kb file200.txt,c:\dirG,100kb CSVで上記の様なデータがあり、F1のデータにおいて、 ファイル名の数字部分でソートしたいのですが、 意図したソートができません。 数字を考慮してのソートってどうやればよいでしょうか。 PS c:\>Get-Content .\list.csv|ConvertFrom-CSV |Sort-Object f1 F1 F2 F3 -- -- -- file01.txt c:\dirA 100kb file100.txt c:\dirG 100kb file20.txt c:\dirC 100kb file200.txt c:\dirG 100kb file01.txt→file02.txt→file100.txt→file200.txtの並びでソートさせたいです。 よろしくお願いします。

  • テキストファイルを読み込んでソートするプログラム

    英文のテキストファイルを読み込んで、単語を一行に一単語ずつ並べた後、それをアルファベット順にソートして、同じ単語を消去したテキストファイルを作るプログラミングを作りたいと思っています。 しかしテキストファイルを読み込むという命令がよくわかりません。 isalpha()などを使ってプログラム内に打ち込んだ英文を単語ごとに分けるプログラムは出来たのですが、テキストファイル(.txt)はどうやって読み込めばいいんでしょうか? プログラムはGNOMEのXEmacsで作っていて、C言語です。

  • ファイルサイズの表示 &ソート

    Fedora3です。 ●statコマンドやwc -cコマンドでファイルサイズを取得していますが、これはバイト単位だと思います。これをMB単位やGB単位で表示する方法などはございますでしょうか? ●また、カレントディレクトリの範囲でファイルサイズを取得した後にソートしてファイルサイズのでかい順に並べ、それを表示させたいのですが、どのようにすればよいでしょう。 ご存知の方よろしくお願いします。

  • Sortコマンド以外で行をソートする方法

    Sortコマンドを使ってテキストファイル内の行をソートしていたのですが、扱うテキストファイルの内容によってエラーが出てしまい、エラーメッセージをWEBで検索して書かれていた対策をしたのですがうまく行きませんでした。 ですので、Sort以外のコマンドで、テキストファイル内の行を昇順と降順でソートしたいと考えているのですが、何か方法はないでしょうか。 Windowsのコマンドプロンプトで使用出来るものであれば、AWKでもPerlでもその他のコマンドでも構いませんし、スクリプトファイルを読み込めるコマンドでしたらスクリプトでの書き方でも結構ですので、ご存知の方がおられましたら教えて頂けないでしょうか。

  • 文字数順にソートするには

    テキストファイルの行を文字数順にソートしたいのですが、 sort コマンドを使って行うことはできないのでしょうか? $ perl -e 'print for sort { length $a <=> length $b } <>' foo.txt でもいいのですが、行数が膨大なため、できるだけ早く処理したいと思っています。 もし何か方法がありましたら教えてください。お願いします。

  • ファイル名ソートにハイフン

    エクスプローラーのファイル名順ソートについてなのですが、 ファイル名にハイフンが含まれていると、意図したようにソートされません。 たとえば、以下のファイルがあるとします。 a-1.txt a-2.txt a1.txt a2.txt ハイフンで区切って、大分類-小分類のような意味を持たせているので上記のように並んで欲しいのですが、以下のように並んでしまいます。 a1.txt a-1.txt a2.txt a-2.txt これがどういう並びなのか…、単にハイフンを無視でもなさそうだし、マイナスと認識と言うわけでもなさそうだし、ハイフンを無視して並べておいてから、ハイフンありを後に、という感じでしょうか…。 いずれにしても、ハイフンでグループ分けしたい場合にこれでは困ります。 (具体的にはCPANファイルのソート) 「数値として認識させる/文字列として認識させる」の設定方法NoStrCmpLogicalについては情報が多く見つかりましたが、上記のような問題の解決方法はないでしょうか。

  • COPYコマンドで結合すると余計な改行コードができる

    batファイル内でCOPYコマンドで2つのファイルを結合するコードを書いています。 しかし、中身が空の0KBのデータ同士を結合すると、改行データが1つ含まれる1KBのデータが作成されてしまいます。 この改行データの作成を防ぐにはどのようなコマンドを書けばよろしいでしょうか。どなたかご存知の方がいれば宜しくお願い致します。 【2つのファイルを用意】 test01.txt 0KB test02.txt 0KB ↓ 【結合】 COPY test*.txt test.txt ↓ 【改行コードを含むテキストが作成される】 text.txt 1KB

  • テキストファイルが読めない

    Tシャツのデザインを頼んだところ、添付ファイルで送られてきた。●●.txt(909KB) プロパティで見るとファイルの種類はテキストドキュメント。開くとわけのわからない文字が羅列している。見れない原因はどこにあるのだろう。

  • ファイル確認ツールにおいて

    使用OS:Win2000Pro あるフォルダ内のファイルのサイズと数をチェックするツールがないか探しています。なんとかフリーのツールがあればなと・・・。 組み合わせでもいいのですが、毎日のチェックに使用したいのです。 例:Aのフォルダには、A1~A10までのフォルダがあり、   その各フォルダ内のそれぞれには、数個のファイルがあります。   A1のフォルダであれば、   A101.DAT(フォルダ名+01.DAT) ~   A150.DAT(フォルダ名+50.DAT)まであります。   で、ある処理を行うとファイル名.TXTのファイルが出来ます。   A101.DATであれば、A101.TXTのように。   そこで、DATの数とTXTの数が同じかチェックが行えることと、   ファイルのサイズのチェックを行いたい。   TXTファイルは処理が正常時には、ファイルサイズが0KBで   異常時は、0KBではない。 いろいろ探してはいるのですが、なかなか見つからなくて。 よろしくお願いいたします。

  • テキストファイルのデータの追加

    二つのテキストファイルを結合というより新規のデータだけを追加したいのですが、そのようなコマンドはあるのでしょうか? 今は copy a.txt+b.txt c.txt copy c.txt b.txt を動かした後、テキストbを開いてテキストaとテキストbの重複しているデータを手作業で消しています。 また、上の2行のコマンドを1行にすることは可能でしょうか?