2010-11-25 12 views
2

私はタブで区切られた行を持っています。最初の列に関してのみ行をソートしたいと思います。1行だけをソートするUnixソート

これはUnixソートを使用して達成できますか?

u.s 2||`` U.S ''||527 || 107 
u.s. 2||`` U.S. ''||532 || 107 
us. 2||Us.||532 || 112 
u.s. 2||U.s.||629 || 112 
us. 2||US.||6444 || 112 
us 2||US||8655700 || 27 
u.s 2||U.s||992 || 112 

それは

u.s 
u.s. 
us. 
u.s. 
us. 
us 
u.s 

ドットがソートによって考慮されていない使用して並べ替えることがあります。上記のものは、sort -k1の使用後にソートされます。 米国本社とu.s.一緒ではありません。私はあなたが探していると信じて

+0

を私はタブ区切りの行が何を意味するのかわからない。でき、あなたに –

+0

ソート時にドットが考慮されていません – AlgoMan

答えて

2

あなたが最初のフィールドでソートしている場合、あなたが希望しない限り、キーを指定する理由はありません残りの行を無視します。あなたがそれをしたい場合は、-k1,1をする必要があります。あなたはCロケールを指定する必要があります(または、あなたはピリオドを無視しないように同義POSIXロケールを使用することができます。

LC_COLLATE=C sort -k1,1 inputfile 

または

LC_COLLATE=C sort inputfile 
0

sort -k 1 filetosort 

タブは、ソートのデフォルトの区切りである空白区切り、です。

0

私のソート(Linux版)は可能です。私はそれがどのように移植可能かわかりません。 BASHで:

sort -k1 -t$'\t' 
-k1

-tフィールドセパレータを指定し、キー列(複数可)のIDを与えます。

+0

ドットとスペースは処理されません。ソートはまったくドットがないように処理されます。 – AlgoMan

1
おそらく、ソートのためのロケールを設定し、Cロケールに設定する必要があり

LANG=C sort -k1 data.file 
関連する問題