- 締切済み
数字を認識するsortコマンドはありますか?
Windows XP/7のファイルマネージャーを見ていると、桁数に関係なく数字がソートされています。 (昔は桁数をそろえてゼロ詰めしていたものでしたが) これと同じことができるsortコマンドはないでしょうか? ファイル1 ファイル2 : ファイル10 ファイル11 というような内容のテキストファイルをソートして、数字順に出力してほしいのです。 現状では ファイル1 ファイル10 ファイル11 ファイル2 : となってしまいます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kteds
- ベストアンサー率42% (1883/4441)
No.1の補足です。 >対象はテキストファイル内のテキストであり、ファイルマネージャーのファイル名ではありません。 事例としてマイクロソフトの説明がファイルマネージャーになっていますが、 Windowsのsortコマンドの例はテキストファイル内のテキストのsortです。 ただしWindowsのsortコマンドでは今回の並び替えはできません。 --- windows標準ツールで行なうとすればpowershell sortオブジェクトではnumeric が指定できますので数値順sortが可能です。 したがって powershell を使って以下を行なえば可能です。 したがって 1. ファイルnnn より数値部分のみ取り出す。(これは 普通のsort コマンドでも可能) 2. numeric sort する。 3. "ファイル"という文字をを付与する。 ---以上です。
- notnot
- ベストアンサー率47% (4900/10359)
文字列の中の数字部分を自動的に判別してと言うことなら、そういうツールはないと思います。 場所が固定なら、gnuのsortを使えばできますが、Windows用の gnu-win32 の sort だと、日本語に対応していません。 file1 file10 file2 file11 というように5文字目から数字ということがわかっているなら、 gsort -k 1.5n でソートできます。フィールド1の5文字目以降を数字と見なしてソートするという意味。
- kteds
- ベストアンサー率42% (1883/4441)
> というような内容のテキストファイルをソートして、数字順に出力してほしいのです。 まぎらわしい表現という印象ですが、 要するに、ごく一般的な「文字列順」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
補足
確かに紛らわしい書き方でした。申し訳ありません。 でたらめな順に並んでいる「hoge (数字)」という行を、桁数に関係なく数字順にソートしてほしいのです。 普通にsortコマンドを使うと hoge 1 hoge 10 hoge 11 hoge 2 : となってしまいますが、 hoge 1 hoge 2 : hoge 10 hoge 11 という結果を得たいのです。 対象はテキストファイル内のテキストであり、ファイルマネージャーのファイル名ではありません。