• 締切済み

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

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

みんなの回答

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

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

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

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

  • kteds
  • ベストアンサー率42% (1883/4441)
回答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

専門家に質問してみよう