回答:
sort
の-k
オプションを使用して、一度に(複数の)列でソートします。
$ sort -k1,1 -k2n input
A 1-2
A 3-4
A 6-8
B 5-9
B 7-10
-k1,1
最初の列で最初にソートされ、最初の列-k2n
が結び付けられている場合は数値で2番目に¹でソートされます。したがって、出力は目的の順序で取得されます。
数値でソートする場合、フィールドが数値になるのを止めるまでフィールドを調べるだけなので、フィールドの最初の要素だけを比較できます。
2つのキーが同じを比較する場合、sort
最後の手段の比較として全行を字句的に比較します。たとえばA 1-10
vs A 1-2
では、最初のキーは同じ(A
文字列)で、2番目のキーも(両方とも数値として扱われます1
)ので、sort
レキシカルにA 1-10
vs を比較A 1-2
し、後者は2
after としてソートされ1
ます。GNUの実装はsort
有する-V
オプションまたはV
実行する鍵フラグバージョンので、ストリング内の桁の配列を数値的に比較される以外の字句比較に似てソートし、sort -k1,1 -k2V
ソートすることになるA 1-10
後A 1-2
ため、10
数がより大きいほど2
。
¹技術的に-k2
は、2番目のフィールド(非ブランクからブランクへの最初の遷移後)で始まり、行の終わりで終わる行の部分を意味しますが、n
フラグ-k2,2n
は先頭部分のみと同等です数字を構成するものが考慮されます。