下線付きの数字を数字で並べ替える

下線付きの数字を数字で並べ替える

次のデータがありますが、数値順に値を並べ替えたいと思います。このコマンドは効果がありません。

sort -t'_' -nk3,2 c

入力データ

5_5_1_2
5_5_1_3
5_5_1_4
5_5_1_5
5_5_2
5_5_3
5_5_4
5_5_5
5_6
5_7
6_1_10
6_1_11
6_1_12
6_1_13
6_1_14
6_1_2
6_1_3
6_1_4
6_1_5
6_1_6
6_1_7
6_1_8
6_1_9
6_2_10
6_2_11
6_2_12
6_2_13
6_2_14
6_2_15
6_2_16
6_2_17
6_2_1
6_2_2
6_2_3

答え1

何を達成したいのか言うのは難しいですが、次のことが必要だとします。

5_5_1_2
5_5_1_3
5_5_1_4
5_5_1_5
5_5_2
5_5_3
5_5_4
5_5_5
5_6
5_7
6_1_2
6_1_3
6_1_4
6_1_5
6_1_6
6_1_7
6_1_8
6_1_9
6_1_10
6_1_11
6_1_12
6_1_13
6_1_14
6_2_1
6_2_2
6_2_3
6_2_10
6_2_11
6_2_12
6_2_13
6_2_14
6_2_15
6_2_16
6_2_17

出力として。

これは、数字を「バージョン」として扱うことによって得られ、「バージョンアライメント」は、以下のようにスイッチを介して-V使用できる。

sort -V <file>

この動作を以下に説明する。sortマニュアルページ

答え2

-kx,y方法:x番目のフィールドの先頭で終わり、y番目のフィールドの終わりで終わる行の部分をソートキーとして使用します。

したがって-k3,2、この場合は意味がありません。以下を意味する場合:3番目のフィールドを数字で並べ替え、2番目のフィールドを数字で並べ替えます。、それは:

sort -nt_ -k3,3 -k2,2

または:

sort -t_ -k3,3n -k2,2n

(ここでこのオプションを使用してグローバルに数値ソートを実行するnのではなく、数値フラグが各キー仕様に適用されます。)-n

関連情報