- 締切済み
ソート
cygwinのCシェルで、ファイルの内容をソートしたいです。 数字だけだとsort -n でソートされるのですが、頭にアルファベットがある場合に ソートする方法はあるでしょうか? 下記のようになってしまうのですが、頭にアルファベットがあっても後ろの数字でソートしたいです。 L1 L10 L101 L102 L2 L20 L201 L3 L30 L301 L401
- みんなの回答 (4)
- 専門家の回答
みんなの回答
> L1 aaaa xxx > L30 bbbb yyy > L2 cccc zzz > このように後に何かあった場合は出来ないのでしょうか? ですから、sed の使い方次第です。 例) sed 's/[^0-9]*/& /' test.txt | sort -k 2,2n | sed 's/ //' L1 aaaa xxx L2 cccc zzz L30 bbbb yyy
No.2 です。 > 試してみましたが、-nをつけた時と同じ結果になりました。 そんなことないと思いますけど。 回答をコピー & ペーストして実行すると、少なくとも私の環境では以下のようにソートされます。 もしかして、コピー & ペーストせずに手入力して、タイプミスしているのではないでしょうか? sed 's/[0-9]*$/ &/' test.txt | sort -k 2,2n | sed 's/ //' L1 L2 L3 L10 L20 L30 L101 L102 L201 L301 L401
お礼
すみません、元ファイルのほうで数字の後にスペースがあったのが原因でした。 数字の後のスペースを無くすと出来ました。 ありがとうございます。 L1 aaaa xxx L30 bbbb yyy L2 cccc zzz このように後に何かあった場合は出来ないのでしょうか?
補足
コピペしています。 もう一度コピペしましたが、出力結果は-nと同じになりました。
> 例としてあげましが、実際はアルファベットはL以外にも多数あり、 > 1文字だけでなく2,3文字の場合もあります。 そのような場合でも、sed の使い方次第で対応可能ですよ。 例) sed 's/[0-9]*$/ &/' test.txt | sort -k 2,2n | sed 's/ //'
補足
ありがとうございます。 試してみましたが、-nをつけた時と同じ結果になりました。
- Tacosan
- ベストアンサー率23% (3656/15482)
一般的には「あらかじめ sed などで空白を入れてからソート」でしょうか.
補足
ありがとうございます。 例としてあげましが、実際はアルファベットはL以外にも多数あり、 1文字だけでなく2,3文字の場合もあります。