16

次のファイルを並べ替えようとしています。

a 2
b 1
a 10

私は取得する必要があります:

a 2
a 10
b 1

-kPOS [opts]オプションについて知っているので、それを使用してみます。

sort -k1 -k2n file

しかし、このコマンドは私にのみ与えます:

a 10
a 2
b 1

したがって、最初の列で並べ替えますが、2番目の列では並べ替えません。実行sort -k2n fileすると、2番目の列で並べ替えられます。

b 1
a 2
a 10

どうすれば2列で並べ替えることができますか?

編集:

並べ替え(GNU coreutils)5.93

4

3 に答える 3

31

主キーを終了する必要があります。そうしないと、 sort は指定されたフィールドから始まるすべてのフィールドを使用します。

sort -k1,1 -k2n
于 2013-01-31T11:44:57.907 に答える
7

ほぼ正解です。これを試して:

sort -k1,1 -k2,2n
于 2013-01-31T11:49:12.637 に答える
6

並べ替えがある場合GNU sortは、バージョンの並べ替えを実行できます。

$ sort -V file
a 2
a 10
b 1

オプション:

-V, --version-sort          natural sort of (version) numbers within text

バージョンの並べ替えの良い点は、列に関係なく機能することです。

$ cat file
a2
b1
a10

$ sort -V file
a2
a10
b1
于 2013-01-31T11:43:47.703 に答える