4

次のスニペットを検討してください。

echo '7 a
3 c
3 b
2 first
2 second
2 third
2 fourth
2 fifth
9 d
2 sixth
' | sort -n -k 1

次の出力が得られます。

2 fifth
2 first
2 fourth
2 second
2 sixth
2 third
3 b
3 c
7 a
9 d

リストは最初の文字を数値キーとして正しく並べられていますが、連続して等しい値についても、元の順序がシャッフルされています。私は取得したい:

2 first
2 second
2 third
2 fourth
2 fifth
2 sixth
3 c
3 b
7 a
9 d

これは可能sortですか?そうでない場合、シェル ツールを使用してこの種の並べ替えを実現する最も簡単な方法は何でしょうか?

4

3 に答える 3

6

-s(stable sort) フラグを追加するだけで、最終手段の比較が無効になります

echo '7 a
3 c
3 b
2 first
2 second
2 third
2 fourth
2 fifth
9 d
2 sixth
' | sort  -k 1,1n -s

2 first
2 second
2 third
2 fourth
2 fifth
2 sixth
3 c
3 b
7 a
9 d
于 2013-11-09T01:30:19.130 に答える
2

で行番号を追加しnl、 にパイプしsort -k2,1て行番号をセカンダリ キーとして使用し、 で番号を切り捨てますcut。または使用しますsort -s。:p

于 2013-11-09T01:30:38.537 に答える
1

「安定した」ソートを探しています。並べ替えオプションを試してください-s(または、システムのマニュアル ページを確認してください)。

于 2013-11-09T01:29:49.780 に答える