プロが教えるわが家の防犯対策術!

cygwinのCシェルで、ファイルの内容をソートしたいです。

数字だけだとsort -n でソートされるのですが、頭にアルファベットがある場合に
ソートする方法はあるでしょうか?

下記のようになってしまうのですが、頭にアルファベットがあっても後ろの数字でソートしたいです。
L1
L10
L101
L102
L2
L20
L201
L3
L30
L301
L401

A 回答 (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
    • good
    • 0
この回答へのお礼

 

お礼日時:2009/12/16 18:54

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

この回答への補足

コピペしています。
もう一度コピペしましたが、出力結果は-nと同じになりました。

補足日時:2009/12/16 17:01
    • good
    • 0
この回答へのお礼

すみません、元ファイルのほうで数字の後にスペースがあったのが原因でした。
数字の後のスペースを無くすと出来ました。
ありがとうございます。

L1 aaaa xxx
L30 bbbb yyy
L2 cccc zzz

このように後に何かあった場合は出来ないのでしょうか?

お礼日時:2009/12/16 17:12

> 例としてあげましが、実際はアルファベットはL以外にも多数あり、


> 1文字だけでなく2,3文字の場合もあります。

そのような場合でも、sed の使い方次第で対応可能ですよ。

例) sed 's/[0-9]*$/ &/' test.txt | sort -k 2,2n | sed 's/ //'

この回答への補足

ありがとうございます。
試してみましたが、-nをつけた時と同じ結果になりました。

補足日時:2009/12/16 16:24
    • good
    • 0

一般的には「あらかじめ sed などで空白を入れてからソート」でしょうか.

この回答への補足

ありがとうございます。
例としてあげましが、実際はアルファベットはL以外にも多数あり、
1文字だけでなく2,3文字の場合もあります。

補足日時:2009/12/15 13:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!