人と同じソート順で結果を表示するには、どのようにソートする必要がありますか?

人と同じソート順で結果を表示するには、どのようにソートする必要がありますか?

sort -k1,1 file.txt次のようにファイルの最初のフィールドでsortコマンドを実行します。

1,2,3
2,1,1
10,2,1

私にしてください:

1,2,3
10,2,1
2,1,1

変える:

1,2,3
2,1,1
10,2,1

私は2前に10が欲しくありません。これを行う方法はありますか?

ベストアンサー1

説明したようにman sort

   -n, --numeric-sort
          compare according to string numerical value

だからあなたは以下が欲しい:

$ sort -nk1,1 file
1,2,3
2,1,1
10,2,1

さらに、デフォルトではフィールドはスペースで区切られているため、このファイルのこれらの行にはフィールドが1つしかありません。たとえば、最初の行の最初のフィールドは1,2,3ではありません1-t ,フィールドを追加する必要があります,-separated

sort -t, -nk1,1 file

-nを使用すると、sortソートキーの先頭に有効数字を形成する文字シーケンスのみが考慮されます(先行スペースは無視されます)。最初の行の場合、Noneは実装とロケール-t,によって(ユーザーの小数点区切りがある場合)、または(ユーザーの1000区切りがある場合)として扱われ、その項目はすべて無視されます。sort1,2,311.2,123,sort

おすすめ記事