• 締切済み

数字を認識するsortコマンドはありますか?

Windows XP/7のファイルマネージャーを見ていると、桁数に関係なく数字がソートされています。 (昔は桁数をそろえてゼロ詰めしていたものでしたが) これと同じことができるsortコマンドはないでしょうか? ファイル1 ファイル2  : ファイル10 ファイル11 というような内容のテキストファイルをソートして、数字順に出力してほしいのです。 現状では ファイル1 ファイル10 ファイル11 ファイル2  : となってしまいます。

みんなの回答

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.3

No.1の補足です。 >対象はテキストファイル内のテキストであり、ファイルマネージャーのファイル名ではありません。 事例としてマイクロソフトの説明がファイルマネージャーになっていますが、 Windowsのsortコマンドの例はテキストファイル内のテキストのsortです。 ただしWindowsのsortコマンドでは今回の並び替えはできません。 --- windows標準ツールで行なうとすればpowershell sortオブジェクトではnumeric が指定できますので数値順sortが可能です。 したがって powershell を使って以下を行なえば可能です。 したがって 1. ファイルnnn より数値部分のみ取り出す。(これは 普通のsort コマンドでも可能) 2. numeric sort する。 3. "ファイル"という文字をを付与する。 ---以上です。

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.2

文字列の中の数字部分を自動的に判別してと言うことなら、そういうツールはないと思います。 場所が固定なら、gnuのsortを使えばできますが、Windows用の gnu-win32 の sort だと、日本語に対応していません。 file1 file10 file2 file11 というように5文字目から数字ということがわかっているなら、 gsort -k 1.5n でソートできます。フィールド1の5文字目以降を数字と見なしてソートするという意味。

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.1

> というような内容のテキストファイルをソートして、数字順に出力してほしいのです。 まぎらわしい表現という印象ですが、 要するに、ごく一般的な「文字列順」sortを行ないたい、ということですね。 win7(win8も)はデフォルトで数値順になっていますので、レジストリ変更すればいいです。 試してみてください。 「名前」が存在しない場合は新規作成してください。 レジストリ キー: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 名前: NoStrCmpLogical データ: 1 をセットする。 --- 結果はPC再ログオン後に反映されます。(PC再起動しなくてもいい) sortコマンドはwin7のコマンドを使ってください。 添付画像参照。 この件はマイクロソフト下記サイト参照。 win7(win8)でも適用されます。 http://support.microsoft.com/kb/319827

hzd00430
質問者

補足

確かに紛らわしい書き方でした。申し訳ありません。 でたらめな順に並んでいる「hoge (数字)」という行を、桁数に関係なく数字順にソートしてほしいのです。 普通にsortコマンドを使うと hoge 1 hoge 10 hoge 11 hoge 2  : となってしまいますが、 hoge 1 hoge 2  : hoge 10 hoge 11 という結果を得たいのです。 対象はテキストファイル内のテキストであり、ファイルマネージャーのファイル名ではありません。

関連するQ&A

  • treeコマンドでソートできませんか?

     コマンドプロンプトのtreeコマンドで、ディレクトリ名順、ファイル順にソートして出力することはできますか?  “| sort”を使ってみましたが、どうもうまくできませんでしたので。よろしくお願いします。

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

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

  • sortコマンドについて

    いつもお世話になっております。 sortコマンドについて質問させて下さい。 現在UNIXコマンドのsortによってファイルをソートしようとしています。 ソート対象となるファイルは下記の通りです。 ファイルの種類:csvファイル ファイルサイズ:80MByte 1レコード長:48Byte レコード数:120万レコード レコード例: 2,1000 ,1,10C0,15,0000000100000000000000000000000000000000 2,1117 ,1,10B0,16,0000000300000000000000000000000100000000 ・ ・ ・ そこで下記のようなコマンドにてソートしています。 sort -t, -k 1,1 -k 2,2 -k 3,3 -k 4,4 < fileA.csv > fileB.csv すると「sort:0653-657ソート中に書込みエラーが発生しました。」と出力され中断してしまいます。 自分なりにsortコマンドについて調べてみたところ、 /usr/tmpディレクトリのファイルシステムがいっぱいになることでコマンドが失敗しているようです。 (一時的にそのディレクトリにソート内容を展開しているようでした) 社内にて/usr/tmpディレクトリのファイルシステムの拡張を求めたところ「できない」と言われてしまいました。 開発の最終段階でのボリュームテストを行ったときの障害でしたので、 処理を大幅に変更するような対処は出来ない状況です。 代替方法などありましたらご教示頂きたいと思います。 以上、宜しくお願い致します。

  • sortコマンドについて

    ファイルaaaについて、 第1ソートキーを第1列目で数値順に 第2ソートキーを第2列目でアルファベット順に ソートした結果をbbbに出力したいと思います。 sort -n -k 1,1 -d -k 2,2 aaa > bbb としたところ、正しい結果が得られませんでした。 どのようにしたら良いのか教えて下さい。

  • コマンドプロンプト dir でのソート

    Windows7のコマンドプロンプトにてdirコマンドでのソートについて教えてください。 ソートするファイルはデジカメ写真群(jpeg形式)です。 ファイルが入ったフォルダでプロパティを見ると「日付時刻」「撮影日時」「アクセス日時」 「作成日時」「更新日時」があります。 推測ですが、写真を回転し保存したりして「更新日時」が変わっているのでは…と思って います。 複数のデジカメで撮った写真を撮影日時の順でソートしたくて dir/od と打つとどうやら 「撮影日時」のソートではなく「更新日時」でソートされている模様。 「撮影日時」でソートさせるにはどんなコマンドを打てばいいでしょうか? あるいはdirコマンドで「撮影日時」の情報も拾えればいいのですが....。 数百枚の写真を効率よく「撮影日時」でソートしたいです。 よろしくお願いします。 やりたいのは、リダイレクトした結果を元にファイル名を撮影日時順にナンバリングしたい のです。(意味通じます?)

  • MS-DOSコマンドで SORTの結果を出すには?

    MS-DOSコマンドで SORTはできるんですが、その結果をファイルに残すのはどうしたらいいのでしょうか。 Windows7 です。SORT (ファイル名)> (ソートしたファイル)とすると 「アクセスが拒否されました」というのが出るんです。

    • ベストアンサー
    • CGI
  • Wndows 全角数字を含むファイル名ソート

    Windows XP エスプローラ画面での、ソート論理がわからず、非常に悩んでいます。 例えば、「数字は半角全角区別なく、数値の大小でソートされる」 と思っていたのですが(間違い?)、以下のようなファイル名では、その並びとなりません。 例) 5個のファイル名「1、1、2、2、100」でのソート結果  1  1  2 100  2   (↑何故か100が2よりも上にきている) ・ソート時の全角数字の取り扱いはどのようになるのでしょうか? ・また、Windows XPでのソート論理詳細の情報などあれば、 どなたか教えていただけないでしょうか??

  • windows2000で数字の順番にソートしたい

    会社に複数台のPCがあり、windowsの2000・XP・Vistaの3種類のOSがあります。 今、2000のPCで仕事をしているのですが、エクスプローラでファイルを並べるときに、名前順にソートすると、10→11→1→20→2・・・のようになって大変不便です。 XPやVistaでは、ちゃんと1→2→10・・・のように並びますよね。 会社のデータなので勝手に名前を付け替えるわけにもいきません(頭に0もつけられません)。 2000でXP・Vistaタイプのソートをする方法はありませんか? よろしくお願いします。

  • UNIX コマンドへの引数について

    二つのテキストファイル、file1 と file2 の内容を UNIX のコマンドで比較しようとしています。 file1 と file2 は非常にサイズが大きく(2 - 3GB程度)、またソートされていない状態で、それぞれレコード順はバラバラです。 この二つのファイルの差分レコードを中間ファイルを作らずに抽出する事を考えております。 そこで comm コマンドの実行を検討しているのですが、 未ソートデータの為、二つのファイルのsort 結果を comm コマンドに 引き渡そうとしていますが、その方法が分からず困っています。 ご教示頂けると大変助かります。 また、comm コマンドを利用する以外の方法でより高速に実行可能な方法が有りましたら併せてご教示頂けると幸いです。 以上、宜しくお願い致します。

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

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