次のように、3つのフィールドからなる非常に単純なテキストファイルがあり、それぞれがスペースで区切られています。
123 15 0 123 14 0 345 12 0 345 11 0
そして、最初の列で並べ替える並べ替えコマンドを発行しましたsort -k 1 myfile
。ただし、最初の列だけでソートするわけではありません。行全体で並べ替えると、次の結果が得られます。
123 14 0 123 15 0 345 11 0 345 12 0
コマンドまたはファイルに何か問題がありますか?
次のように、3つのフィールドからなる非常に単純なテキストファイルがあり、それぞれがスペースで区切られています。
123 15 0 123 14 0 345 12 0 345 11 0
そして、最初の列で並べ替える並べ替えコマンドを発行しましたsort -k 1 myfile
。ただし、最初の列だけでソートするわけではありません。行全体で並べ替えると、次の結果が得られます。
123 14 0 123 15 0 345 11 0 345 12 0
コマンドまたはファイルに何か問題がありますか?
以下を使用する必要があります。
sort -k 1,1 -s myfile
最初のフィールドのみを並べ替えたい場合。この構文は、ソートの開始フィールドと終了フィールドを指定します。sort -k 1
最初のフィールドから行末までソートすることを意味します。ソートキーが同じ入力に対して行が同じ順序に保たれるようにするには、-s
フラグ (GNU) を使用して安定したソートを使用する必要があります。
sort(1)
マニュアルページからこれを参照してください:
KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where
F is a field number and C a character position in the field; both are
origin 1, and the stop position defaults to the line's end.
および情報ページ:
The --stable (-s) option disables this last-resort comparison so that
lines in which all fields compare equal are left in their original relative
order.